这是我第一次来到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("%30s\n", "The text has " + i + " words");
}
}
这可以正确计算文本中的单词,但是,由于while循环永远不会结束,因此它永远不会打印单词的总数,并且在我编写时都不会继续下面的代码。
有人可以帮我解决这个问题吗?
谢谢!
祝你有美好的一天!
答案 0 :(得分:1)
我会将您的代码调整为以下内容:
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 asd
文本有1行
文本有8个字