这是我第一次来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 个单词