Ich versuche, ein schnelles Programm zu schreiben, das die Anzahl der Leerzeichen in einer eingegebenen Zeichenfolge zählt. Das ist, was ich habe, so weit:Anzahl der Leerstellen in einer eingegebenen Zeichenfolge anzeigen?
import java.util.Scanner;
public class BlankCharacters
{
public static void main(String[] args)
{
System.out.println("Hello, type a sentence. I will then count the number of times you use the SPACE bar.");
String s;
int i = 0;
int SpaceCount = 0;
Scanner keyboard = new Scanner(System.in);
s = keyboard.nextLine();
while (i != -1)
{
i = s.indexOf(" ");
s = s.replace(" ", "Z");
SpaceCount++;
}
System.out.println("There are " + SpaceCount + " spaces in your sentence.");
}
}
Die while-Schleife verwendet zuerst s.indexOf (“„), um den ersten weißen Raum in String s zu finden, ersetzt es mit dem Zeichen Z, füge dann 1 auf den Wert Raumanzahl Dieser Prozess wiederholt sich, bis s.indexOf keinen Leerraum findet, was dazu führt, dass i -1 ist und somit die Schleife stoppt.
Mit anderen Worten, SpaceCount wird jedes Mal um 1 erhöht, wenn ein Leerraum gefunden wird, der dann die Gesamtzahl der Leerräume dem Benutzer anzeigt. Oder sollte es sein ...
Ausgabe: RAUM nicht erhöht, sondern immer 2. Ausdrucken
Wenn ich eintippen waren „eins zwei drei vier fünf“ und ausdrucken String s, würde ich "oneZtwoZthreeZfourZfive" zeigt an, dass vier weiße Leerzeichen vorhanden sind (und dass die while-Schleife viermal ausgeführt wird). Trotzdem bleibt SpaceCount bei 2.
Das Programm läuft gut, aber es zeigt immer eine SpaceCount von 2, auch wenn die Zeichenfolge/Satz mehr als zehn oder zwanzig Wörter ist. Ich erhalte das gleiche Ergebnis, selbst wenn ich eine do while/for-Schleife verwende. Ich war eine Weile bei dieser Sache und bin mir nicht sicher, warum SpaceCount bei 2 feststeckt, wenn der Rest der while-Schleife weiter ausgeführt wird (wie beabsichtigt).
Jede Hilfe wird sehr geschätzt!
Wenn Ihre Zeichenfolge keine abschließenden Leerzeichen hat, meine ich vor und nach der Zeichenfolge, dann können Sie auch 'StringTokenizer tokenizer = new StringTokenizer (str," "); System.out.println ("Gesamtzahl der Leerzeichen sind:" + (tokenizer.countTokens() - 1)); '* in einfachen Worten, wenn Sie die Zeichenfolge schneiden vor dem Zählen für Leerräume * – emotionlessbananas
Ich werde versuchen, die Methoden, die andere erwähnt haben. Ich bin wirklich neugierig, warum sich SpaceCount nicht ändert. Vielen Dank. –