2016-04-28 6 views
0

In Java Programmierung; Ich habe ein Array von vielen Strings, die Sätze sind (zB String[] compString = "This is a sentence"), natürlich inklusive Leerzeichen. Ich möchte, dass der Benutzer denselben Satz in die Konsole eingibt, und ich möchte, dass das Programm beide Zeichenfolgen vergleicht und dem Benutzer mitteilt, ob sie den Satz richtig wiederholt haben oder nicht. Das heißt, ich möchte, dass der Benutzer "Dies ist ein Satz" eingibt und das Programm wird userString mit compString hier vergleichen und "Korrekt" ausgeben. Aufgrund des Leerraums in der Zeichenfolge des Benutzers wird jedoch "Falsch" zurückgegeben, da nur "Dies" mit der Zeichenfolge "Dies ist ein Satz" des Computers verglichen wird. Ich versuchte es mit dieser Festsetzung:Wie gehe ich mit Leerzeichen um, wenn ich Konsolenstrings mit anderen Strings vergleiche?

if(userString.replace(" ","").equalsIgnoreCase(compString[0].replace(" ",""))){ 

Aber das hilft nicht, und noch vergleiche nur „Dieser“ bis „Das ist ein Satz“. Habe ich den Code richtig eingegeben, um alle Leerzeichen zu entfernen? Oder gibt es eine andere Möglichkeit, dies zu tun?

+2

Bitte zeigen Sie den Code, der den Eingang liest - verwenden Sie einen 'Scanner'? Hast du 'nextLine()' benutzt? Haben Sie den abschließenden Zeilenumbruch entfernt? –

+2

String [] compString = "Dies ist ein Satz"; // Sie können einem Array von Strings keinen String zuweisen ... – Burkhard

+0

Ich habe "nextLine" ausprobiert und es eliminiert die Konsole komplett und gibt nur "Wrong" aus. Entschuldigung für die Verwirrung; Die Beispiele, die ich oben gegeben habe, werden nicht mit dem tatsächlichen Code übereinstimmen (ich habe versucht, es einfach zu halten), aber ich werde mehr Code zum OP hinzufügen, in einer Sekunde hier. – Ray25Lee

Antwort

0

Zunächst einmal müssen Sie Ihre Array richtigen Weg, so etwas wie unten zuweisen:

String[] compString = {"This is a sentence"}; 

Und dann versuchen consequtive Leerzeichen vergleichen ignorieren und Fall-Empfindlichkeit ein Ansatz

könnte
String[] compString = {"This is a sentence"}; 
String userString = new Scanner(System.in).nextLine(); 

boolean isSame = userString.trim().replaceAll("\\s+", " ") 
        .equalsIgnoreCase(compString[0].trim().replaceAll("\\s+", " ")); 

System.out.println(isSame); 
+0

Ich kann ein Array schreiben (ich habe die Dinge für das Beispiel verkürzt), aber mein Problem ist ein Satz von der CONSOLE zu einem Satz zu vergleichen, der im Array ist. – Ray25Lee

+0

@ Ray25Lee hast du meine Änderung überprüft? –

0

In Anbetracht compString ist Ihre Zeichenfolge und userString ist die eine von Benutzer zur Verfügung gestellt, folgenden Vergleich sollte funktionieren:

compString.replaceAll(" ", "").equalsIgnoreCase(userString.replaceAll(" ", "")) 
+0

'' th is is a sen ten ce'' und '' this is a sentence'' sind die gleichen wie Ihr Code –