我正在尝试编写一个程序,通过命令行输入文本文件,然后打印出文本文件中的单词数。我已经在这上花了大约5个小时。我正在使用java参加一个介绍课程。
这是我的代码:
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
root_container.width = stage.fullScreenWidth;
root_container.height = stage.fullScreenHeight;
我尝试的每种方式都会遇到不同的错误,而且最一致的错误是#34;找不到符号"用于
中的文件参数import java.util.*;
import java.io.*;
import java.nio.*;
public class WordCounter
{
private static Scanner input;
public static void main(String[] args)
{
if (0 < args.length) {
String filename = args[0];
File file = new File(filename);
}
openFile();
readRecords();
closeFile();
}
public static void openFile()
{
try
{
input = new Scanner(new File(file));
}
catch (IOException ioException)
{
System.err.println("Cannot open file.");
System.exit(1);
}
}
public static void readRecords()
{
int total = 0;
while (input.hasNext()) // while there is more to read
{
total += 1;
}
System.out.printf("The total number of word without duplication is: %d", total);
}
public static void closeFile()
{
if (input != null)
input.close();
}
}
我还不完全确定java.io和java.nio之间的区别是什么,所以我尝试使用两者中的对象。我确定这是一个我无法看到的明显问题。我在这里阅读了很多类似的帖子,这是我的一些代码来自的地方。
我之前已经编译了程序,但之后它在命令提示符下冻结。
答案 0 :(得分:1)
您的代码几乎是正确的。你在while循环中指定了终止条件,如下所示,
while (input.hasNext())
//还有更多要阅读的内容
然而,由于您只是在不移动到下一个单词的情况下递增计数,因此计数只会通过始终计算第一个单词而增加。为了使它工作,只需将input.next()添加到循环中,以便在每次迭代中移动到下一个单词。
while (input.hasNext()) // while there is more to read
{
total += 1;
input.next();
}
答案 1 :(得分:1)
java.nio
是java.io
的新增和改进版本。您可以使用其中任何一项。我在命令行中测试了以下代码,它似乎工作正常。在try
块中解析了“找不到符号”错误消息。我认为你通过两次实例化一个名为File
的{{1}}对象来混淆编译器。正如@dammina所回答的那样,您需要将file
添加到while循环中,以便扫描程序继续下一个单词。
input.next();