我想寫一個快速程序來計算輸入字符串中的空格數。這是我到目前爲止有:顯示輸入字符串中的空格數量?
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.");
}
}
while循環首先使用s.indexOf(」「)來查找字符串s的第一個白色的空間,與焦ž替換它,然後加1的值SPACECOUNT。這個過程重複,直到s.indexOf沒有找到一個空格,導致我爲-1,因此停止循環。
換句話說,每找到一個空白處,SpaceCount就會增加1,然後向用戶顯示空白總數。或者,它應該是...
問題:SPACECOUNT不增加,反而總是打印出2
如果我輸入「一二三四五」,並打印出一個String,我會得到「oneZtwoZthreeZfourZfive」,表示有四個空格(while循環運行四次)。儘管如此,SpaceCount仍然爲2.
程序運行良好,但它始終顯示SpaceCount爲2,即使字符串/句子超過十個或二十個字。即使在使用do/for循環時,我也會得到相同的結果。我一直堅持這一段時間,我不確定爲什麼SpaceCount在while循環的其餘部分繼續執行(按預期)時停留在2。
任何幫助非常感謝!
如果你的字符串沒有尾隨空格,我的意思是前後字符串,那麼你也可以使用'StringTokenizer tokenizer = new StringTokenizer(str,「」); (「總空間數是:」+(tokenizer.countTokens() - 1));'*用簡單的話說,如果你在計算空白之前修整字符串* – emotionlessbananas
我會嘗試其他人提到的方法。我只是很好奇爲什麼SpaceCount不會改變。謝謝。 –