使用扫描器(Java)计算字数和行数
这是我第一次来到stackoverflow,有时我会告诉我,我很快就会来这里很多次 我试着做一件非常简单的事情,计算用户通过扫描仪给出的文本的字数和行数,显然字数和行数未知,最后打印这两个数字。所有这些都是使用Java实现的 现在,我已经尝试了几天来做单词计数部分,因为这样做之后,它将非常类似于代码行部分。我尝试了很多使用数组、拆分方法等的方法。现在我有了以下代码:使用扫描器(Java)计算字数和行数,java,while-loop,java.util.scanner,Java,While Loop,Java.util.scanner,这是我第一次来到stackoverflow,有时我会告诉我,我很快就会来这里很多次 我试着做一件非常简单的事情,计算用户通过扫描仪给出的文本的字数和行数,显然字数和行数未知,最后打印这两个数字。所有这些都是使用Java实现的 现在,我已经尝试了几天来做单词计数部分,因为这样做之后,它将非常类似于代码行部分。我尝试了很多使用数组、拆分方法等的方法。现在我有了以下代码: import java.util.Locale; import java.util.Scanner; import java.ut
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。
使用正则表达式拆分每个单词,然后计算长度
并最终将其存储为单词。
一旦用户输入一个空行,程序就会终止
输出:
asd asd asd asd asd asd asd asd asd asd asd
文本有1行
课文有8个单词
您可以使用control-D关闭Unix上的输入流。我忘了它在Windows上是什么。我想是Control-Z。你希望它什么时候结束?我希望它在输入文本后返回答案。该代码用于大学任务,将由自动法官更正,因此需要此代码。非常感谢您的帮助!代码工作得很好!这并没有解决我的问题,因为代码将由虚拟法官更正是一项大学任务,我需要代码在输入文本后返回答案。不过,你的回答对我帮助很大,所以谢谢你抽出时间来!: