我正在创建一个代码,用于计算文件中每个单词的数量,然后添加到变量中。最后,它打印出变量。然而,输出始终为 0。
我最初将 while 循环作为 for 循环,我更改了它以避免另一个错误,并且我确保它正在扫描正确的文件。变量也正确连接。然而,无论文件中有什么,代码总是为每个变量输出 0。
public class Example{
public static void main(String [] args) {
//Setting the variables
int var1 = 0;
int var2 = 0;
int var3 = 0;
//Establishing the file and scanner
String searchRes;
File file = new File("Example.txt");
Scanner scan= new Scanner("Example.txt");
//The while loop
while(scan.hasNextLine()) {
searchRes = scan.nextLine();
if (searchRes.equals("FirstWord")) {
var1++;
}
if (searchRes.equals("SecondWord")) {
var2++;
}
if(searchRes.equals("ThirdWord")) {
var3++;
}
}
//Printing results
System.out.println("First: " + var1);
System.out.println("Second: " + var2);
System.out.println("Third: " + var3);
}
}
FirstWord
ThirdWord
FirstWord
FirstWord
SecondWord
First: 3
Second: 1
Third: 1
First: 0
Second: 0
Third: 0
为什么总是输出0?我该如何修复这个错误?
代码中的问题在于创建
Scanner
对象的方式。您当前将文件名作为字符串传递给 Scanner
构造函数,这是不正确的。
相反,您需要将
File
对象本身传递给 Scanner
构造函数。
您只需更新
Scanner
创建行即可使用 File
对象,如下所示:
Scanner scan = new Scanner(file);
您的扫描仪应该采用文件对象而不是文件名
Scanner scan= new Scanner(file);
调试此问题的一种方法是从循环内输出 searchRes 变量,并查看它是否实际读取了单词。