Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 文件I/O和异常_Java - Fatal编程技术网

Java 文件I/O和异常

Java 文件I/O和异常,java,Java,我试图编写一个程序,提示用户输入文件名,读取应该包含两列浮点数的文件,最后打印每列的平均值。使用try/catch/finally块 Scanner in = new Scanner(System.in); System.out.println("Please enter the file name: "); String file = in.nextLine(); try{ Scanner inFile = new Sca

我试图编写一个程序,提示用户输入文件名,读取应该包含两列浮点数的文件,最后打印每列的平均值。使用try/catch/finally块

Scanner in = new Scanner(System.in);
        System.out.println("Please enter the file name: ");
        String file = in.nextLine();
        try{
            Scanner inFile = new Scanner(new File(file));
            int count = 0;
            float average1 = 0;
            float average2 = 0;
            while (inFile.hasNextFloat()) {
                String str = inFile.nextLine();
                Scanner line = new Scanner(str);
                line.useDelimiter(" ");
                average1 = Float.parseFloat(line.next());
                average2 = Float.parseFloat(line.next());
                average1 += in.nextFloat();
                average2 += in.nextFloat();
            }
            System.out.println("The average of the first column: " + average1 / count);
            System.out.println("The average of the second column: " + average2 / count);
        }
        catch (FileNotFoundException e) {
            System.out.println("File not found.");
        }
    }
由于某些原因,它仍在运行,无法找出原因和解决方法。 是的,它读取文件,但不提供输出并继续运行。
谁可以帮助识别问题并帮助我解决问题。

代码没有结束的原因是.nextFloat()中的
只是坐在那里等待命令行的输入。您不需要这一行,因为您已经分析了前一行中的输入。您可以简单地将其添加到平均值中,而不是将其赋值(否则只会在每次迭代中替换平均值)。一旦解决了这个问题,还需要增加计数。下面是一个工作示例:

Scanner in = new Scanner(System.in);
        System.out.println("Please enter the file name: ");
        String file = in.nextLine();
        try{
            Scanner inFile = new Scanner(new File(file));
            int count = 0;
            float average1 = 0;
            float average2 = 0;
            while (inFile.hasNextFloat()) {
                String str = inFile.nextLine();
                Scanner line = new Scanner(str);
                line.useDelimiter(" ");
                average1 += Float.parseFloat(line.next());
                average2 += Float.parseFloat(line.next());
                count++;
            }
            System.out.println("The average of the first column: " + average1 / count);
            System.out.println("The average of the second column: " + average2 / count);
        }
        catch (FileNotFoundException e) {
            System.out.println("File not found.");
        }

我知道,在这一行
String file=in.nextLine()
中,您询问我认为已保存的文件名?我错了吗?但是如果是文件名,我认为您应该添加一个扩展名,如
.txt
。谢谢,这很有帮助