如何读取包含两列数字的文件,然后返回每列的平均值?

时间:2018-05-14 12:21:29

标签: java string

我想读取包含两列浮点数的文件。然后我想打印每列的平均值。

有2列带数字 - 换句话说,每行有2个数字。这是一个例子:

文件包含:
7 3
5 2
9 11
10 12

输出应为:
第1列的平均值为7,75
第2列的平均值为7

到目前为止我有这个代码:

public class MainApp {

    public static void main(String[] args) throws FileNotFoundException {
        String fileName = "columns.txt";
        double number = 0;
        File file = new File(fileName);
        Scanner scanner = new Scanner(file);

        while (scanner.hasNext()) {
            if (scanner.hasNextLine()) {
                number = number + Integer.parseInt(scanner.next());
                number = number / 2;
                System.out.println(number);
            }
        }
        scanner.close();
    }
}

2 个答案:

答案 0 :(得分:5)

如果你期望双输出,那么最好将数字解析为double,而不是int。

您可以使用item在白色空格上分割线条,然后解析双打:

String.split

答案 1 :(得分:-2)

我改变了while循环。现在,在一个语句中读取两列的值,并将其分配给变量号并除以2。 原始代码在每次读取值时计算平均值,并且从不重置数字变量。

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class MainApp {

public static void main(String[] args) throws FileNotFoundException {
    String fileName = "columns.txt";
    File file = new File(fileName);
    Scanner scanner = new Scanner(file);

    while (scanner.hasNext()) {
        double number = (Integer.parseInt(scanner.next()) + Integer.parseInt(scanner.next())) / 2.0;
        System.out.println(number);
    }
    scanner.close();

}

}