我很快就会完成一项任务,但我仍然是Java的新手,只知道基础知识。无论如何,我必须创建一个文本分析器,通过它可以计算我读过的文档的字数,字符和行数。
我在下面找到了这段代码并且我已经开始对它进行评论,但我不知道我的评论是否正确,而且我不确定未注释的部分是做什么的。如果有人可以为我写一些简短的解释,或者我会非常感激。
//Loops through the file until it has counted everything.
while (in.hasNext()) {
String tmpStr = in.nextLine();
if (!tmpStr.equalsIgnoreCase("")) {
String replaceAll = tmpStr.replaceAll("\\s+", "");
// Counts the number of characters within the file.
charsCount += replaceAll.length();
// Counts the number of words within the file.
wordsCount += tmpStr.split(" ").length;
}
// Counts number of lines
++linesCount;
} //Ends While Loop.
我假设在代码计算字符的地方它忽略了空格,我会改变什么以便它也计算空格。
你们都帮忙了,我的工作让我现在了解得更多,足以做出改变,我希望我可以选择你们所有人来解决我的答案,再次感谢:)
答案 0 :(得分:1)
你似乎拥有大部分内容。我将尝试详细解释每个方面。
while (in.hasNext()) {
...
}
这是主循环。它只是测试您正在阅读的输入中是否还有其他内容。如果有,则执行大括号之间的代码。
String tmpStr = in.nextLine();
从扫描仪读取下一行并将其分配给tmpStr。这里有一个小问题。 nextLine()不返回回车符或换行符。如果您应该将这些作为项目中的字符计数,那么您的计数将会被取消。
if (!tmpStr.equalsIgnoreCase("")) {
...
}
此if语句检查它是否只是一个空行(即没有字符),如果是,则跳过处理该行。这是一项优化,并非严格要求实现您的目标。
String replaceAll = tmpStr.replaceAll("\\s+", "");
这是一个正则表达式调用。它从行中删除所有空格并将其存储为临时变量。空格包括空格,制表符,垂直制表符,换页符,回车符等字符。除非您的问题以不需要计算空格的方式定义,否则几乎肯定不希望这样做。如果问题需要字符数(空白和所有)并且您的输入保证是ASCII,那么计算字符的最简单的解决方案是返回文件大小,因为1个字符= ASCII字节中的1个字节。否则问题会变得有点毛茸茸。如果你提供了为项目目的定义角色的内容,我可以在这里提供更好的指导。
charsCount += replaceAll.length();
这会保留所看到的非空白字符的数量。 + =运算符获取之前charsCount的值,并在删除空格后添加字符行的长度。
wordsCount += tmpStr.split(" ").length;
Split接受一个字符串并返回一个由所提供的字符拆分的子字符串数组。在这种情况下,角色是空间。因此,“快速棕色狐狸”系列将返回四个项目“The”,“quick”,“brown”和“fox”的数组。请注意,空格被删除。然后将数组的长度添加到正在进行的单词计数中。这是一种相当天真的计算单词的方法,因为有些单词边界不是空格。这包括tab,em dashes等等。这可能适用于您的目的,但它将取决于您项目的参数。
++linesCount;
这会对行进行计数。 ++只是意味着“加1”变量。因此,对于while循环的每次迭代,linesCount将增加一个。
答案 1 :(得分:0)
更多评论:
// Get the next line from the input
String tmpStr = in.nextLine();
// If the line is not empty ...
if (!tmpStr.equalsIgnoreCase("")) {
// Remove all whitespace from the line
String replaceAll = tmpStr.replaceAll("\\s+", "");
答案 2 :(得分:0)
我尝试通过几个步骤解释代码是如何工作的
希望这能使事情变得清晰
答案 3 :(得分:0)
如果你想计算包括空格在内的所有字符,你需要删除replaceAll
,然后计算行字符,然后计算字数
//Loops through the file until it has counted everything.
while (in.hasNext()) {
String tmpStr = in.nextLine();
if (!tmpStr.equalsIgnoreCase("")) {
// Counts the number of characters within the file.
charsCount += tmpStr.length();
// Counts the number of words within the file.
wordsCount += tmpStr.split(" ").length;
}
// Counts number of lines
++linesCount;
} //Ends While Loop.