簡體   English   中英

使用掃描儀掃描儀(Java)計算字數和行數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM