新人求问Java文件输入输出小问题

package Question;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;

public class QuestionTest {

public static void main(String[] args) throws IOException{
    Scanner input = new Scanner(System.in);
    int[] number = new int[5];
    String[] name = new String[5];
    int[][] grade = new int[5][3];
    double[] sum = new double[5];
    for (int i = 0; i < 5; i++) {
        number[i] = input.nextInt();
        name[i] = input.next();
        for (int j = 0; j < 3; j++) {
            grade[i][j] = input.nextInt();
            sum[i] = grade[i][j] / 3;
        }
    }
    File file = new File("Students.txt");
    try (PrintWriter output = new PrintWriter(file);) {
        for (int i = 0; i < 5; i++) {
            output.print(number[i] + "   ");
            output.print(name[i] + "   ");
            for (int j = 0; j < 3; j++) {
                output.print(grade[i] + " ");
            }
            output.println(sum[i]);
        }
    }
}

}
为什么输入
1 s 15 65 98
2 ssd 45 86 59
3 dsa 45 69 84
4 sad59 86 65 35
5 sdds 56 25 35
后输出在txt文件变成了图片这样子图片说明

因为你在输出分数的时候得到的是分数的地址
应该改为
for (int j = 0; j < 3; j++) {
output.print(grade[i][j] + " ");
}
就可以了,希望对你有帮助。

开启调试,看数据变化就知道了啊!

这个明明是输出的地址啊,学会debug你就知道在哪里转的地址了。

这么写入就这么读出来:
try (PrintWriter output = new PrintWriter(file);) {
for (int i = 0; i < 5; i++) {
output.print(number[i] + " ");
output.print(name[i] + " ");
for (int j = 0; j < 3; j++) {
output.print(grade[i][j] + " ");
}
output.println(sum[i]);
}
}

因为你在输出分数的时候得到的是分数的地址
应该改为
for (int j = 0; j < 3; j++) {
output.print(grade[i][j] + " ");
}

还有。。你的平均分哪里给计算错了吧。。计算的是第三门成绩/3的结果。。