这是我第一次来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循环永远不会结束,所以它永远不会打印总单词数,并且在我编写代码时也不会继续执行下面的代码。
有人能帮我解决这个问题吗?
提前感谢!
祝你今天愉快!
发布于 2018-10-21 03:26:03
我会将您的代码调整为以下代码:
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
正文为%1行
正文有8个单词
https://stackoverflow.com/questions/52907635
复制相似问题