[英]Counting words and lines using scanner Scanner (Java)
這是我第一次在Stackoverflow上,有時告訴我xD很快就會出現在這里。
我正在嘗試做一個非常簡單的事情,計算用戶使用Scanner給定的單詞數和文本行數(顯然是未知的單詞和行數),最后打印出這兩個數字。 所有這些都使用Java。
現在,我已經嘗試了幾天來做單詞計數部分(因為這樣做之后,將非常類似於對行部分進行編碼)。 我已經嘗試了很多使用數組,拆分方法等的方法。現在我有了以下代碼:
import java.util.Locale;
import java.util.Scanner;
import java.util.regex.Pattern;
public class WordCount {
public static void main(String[] args) {
int i=0;
Scanner input = new Scanner(System.in).useLocale(Locale.US);
while(input.hasNextLine()) {
i++;
input.next();
}
System.out.printf("%30s\n", "The text has " + i + " words");
}
}
這樣可以正確計算文本中的單詞,但是,由於while循環永遠不會結束,因此它永遠不會打印單詞的總數,並且在我編寫時都不會繼續下面的代碼。
有人可以幫我解決這個問題嗎?
提前致謝!
祝你有美好的一天!
我會將您的代碼調整為以下內容:
public static void main(String[] args) {
Scanner input = new Scanner(System.in).useLocale(Locale.US);
int lines = 0;
int words = 0;
String currLine = "?";
while (currLine != null && currLine.trim().length() > 0) {
currLine = input.nextLine();
words = words + currLine.split("\\W+").length;
lines++;
}
System.out.printf("%30s\n", "The text has " + (lines - 1) + " lines");
System.out.printf("%30s\n", "The text has " + (words - 1) + " words");
input.close();
}
currLine
來保存用戶輸入的每一行。 lines
和相應的word
。 regex
拆分每個單詞,然后計算數組的長度,最后將其存儲在單詞中。 用戶一旦輸入空白行,程序就會終止。
輸出:
asd asd asd asd asd asd asd asd
文字有1行
文字有8個字
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.