使用扫描仪扫描仪(Java)计算单词和行数



这是我第一次来stackoverflow,有时告诉我,我很快就会在这里xD。

我正在尝试做一件非常简单的事情,计算用户通过扫描仪给出的文本的单词数和行数(显然是未知数量的单词和行数(,最后打印这两个数字。所有这些都使用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("%30sn", "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("%30sn", "The text has " + (lines - 1) + " lines");
System.out.printf("%30sn", "The text has " + (words - 1) + " words");
input.close();    
}
  • 我们需要使用一个变量来保存输入,所以我使用了currLine以保存用户输入的每一行。
  • 将变量重命名为lines并相应地word
  • 使用regex拆分每个单词,然后计算长度 的数组,最后以文字存储。

一旦用户输入空行,程序就会终止。

输出:

自闭症障碍 泛

自闭症障碍 泛自闭症文本有 1 行

文本有 8 个单词

最新更新