扫描正确的文件后,为什么输出总是0?

问题描述 投票:0回答:2

我正在创建一个代码,用于计算文件中每个单词的数量,然后添加到变量中。最后,它打印出变量。然而,输出始终为 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?我该如何修复这个错误?

java file variables java.util.scanner
2个回答
2
投票

代码中的问题在于创建

Scanner
对象的方式。您当前将文件名作为字符串传递给
Scanner
构造函数,这是不正确的。

相反,您需要将

File
对象本身传递给
Scanner
构造函数。

您只需更新

Scanner
创建行即可使用
File
对象,如下所示:

Scanner scan = new Scanner(file);

1
投票

您的扫描仪应该采用文件对象而不是文件名

Scanner scan= new Scanner(file);

调试此问题的一种方法是从循环内输出 searchRes 变量,并查看它是否实际读取了单词。

© www.soinside.com 2019 - 2024. All rights reserved.