打印2D阵列时遇到问题

时间:2017-04-09 01:55:36

标签: java multidimensional-array filereader

编写一个程序,从用户提供的文件中读取学生的姓名及其测试分数。

文件中的前两个值将代表学生数量,后跟测试次数。然后,该计划应计算每个学生的平均考试成绩,并指定适当的成绩(A, B, C, D, E or F)以及每个考试的平均成绩。

外部文件

tom 91 67 84 50 69
suzy 74 78 58 62 64
Peter 55 95 81 77 61
Paul 91 95 92 77 86
Diane 91 54 52 53 92
Emily 82 71 66 68 95
Natalie 97 76 71 88 69
Ben 62 67 99 85 94
Mark 53 61 72 83 73
Anna 64 91 61 53 68

基于我的老师给我们的例子,我一直试图让它在2D数组中打印列表。

 private static final String FILENAME = "/Users/Kal-El/Documents/Programming/grades.txt";

public static void main(String[] args) {

    //below code to read from a file
    BufferedReader br = null;
    FileReader fr = null;

    try {

        fr = new FileReader(FILENAME);
        br = new BufferedReader(fr);

        String sCurrentLine;
        String students [] = new String[10];
        int [][] grades = new int [10][5];

        br = new BufferedReader(new FileReader(FILENAME));

        while ((sCurrentLine = br.readLine()) != null) {

            students = sCurrentLine.split(" ");

            for (int i=0; i < students.length; i++){
                for (int j=0; j < grades.length; j++) {
                    System.out.print(grades[i][j]+" ");

                } // end of inner for loop

            } //end of outer for loop

        } // end of while loop

    } catch (IOException e) {

        e.printStackTrace();

    } // end of catch

}

1 个答案:

答案 0 :(得分:0)

调用currentLine.split(" ")将返回由空格分隔的整行。这一行

tom 91 67 84 50 69

将变成这个数组:

["tom", "91", "67", "84", "50", "69"]

所以像这样循环遍历

for (int i=0; i < students.length; i++)

没有循环所有的学生,它循环着一个学生的名字和所有的分数。数组中的第一个项目将是学生的名字,因此您可以通过System.out.print(students[0])输出该项目。

您可以通过以下方式循环播放该学生的分数:

for (int i = 1; i < students.length; i++)

在你做到这一点时总结它们以获得平均值。我不确定你的grades数组数组的概念是什么,但我认为你不需要它。