为什么hasNextInt()在这里返回false?

jt9*_*133 1 java java.util.scanner

这是我第一次使用Java扫描文件.我正在尝试从一个文本文件中读取整数列表,对它们进行操作,然后将它们读取到另一个文件中.初始文件如下所示:

1234
9876
2345
Run Code Online (Sandbox Code Playgroud)

我正在使用while循环并使用hasNextInt进行读取(在运行程序并检查初始文本文件之后,我确定值已经存在),但是我将零输出到新文本文件,所以我假设hasNextInt ()返回false.可以肯定的是,我只是跳过扫描并使用for循环直接在每个ArrayList元素上操作,输出完全写入新文件.这是我的代码:

    try {
        File inFile = new File("input.txt");
        File outFile = new File("output.txt");

        FileWriter inWriter = new FileWriter(inFile);
        FileWriter outWriter = new FileWriter(outFile);
        Scanner inReader = new Scanner(inFile);

        numberArray.add(1234); //Adding numbers to an array that was previously initialized
        numberArray.add(9876);
        numberArray.add(2345);

        System.out.println("The raw numbers are:");

        for (int n : numberArray) {
            inWriter.write(n + "\r\n");
            System.out.println(n);
        }

        System.out.println("\nThe new numbers are:");

        while (inReader.hasNextInt()) {
            int newNumber = inReader.nextInt();
            int checkDigit = (newNumber / 7);
            int finalNumber = (newNumber % checkDigit);
            outWriter.write("" + newNumber + finalNumber + "\r\n");
            System.out.println("" + newNumber + finalNumber);
        }

        inWriter.close();
        outWriter.close();
        inReader.close();

    } catch (FileNotFoundException fnfe) {
        System.out.println("There was a problem with the inFile file");
    } catch (IOException ioe) {
        System.out.println("There was a problem opening the outFile file");
    }
Run Code Online (Sandbox Code Playgroud)

cad*_*ams 6

您必须在读取文件中的数字之前关闭inWriter.

inWriter在关闭之前不会将文本输出到文件中,因此您的读者没有看到任何内容,因为技术上还没有任何内容.