评分方案:2D数组并打印平均

时间:2017-04-12 23:58:22

标签: java multidimensional-array

我对java非常陌生,我的老师给了我们这个任务,我们可以在网上查看如何使代码工作的想法。我感到很失落,因为我只使用过一次数组而只使用了一次双数组。我真的可以使用一些帮助和解释,我将如何让这个程序运行。

到目前为止,我的老师已经向我展示了如何拆分学生和成绩,但他没有告诉我如何打印成绩。另外,当你有一个双数组时,如何计算每个学生的行而不是列的平均值?

评分方案:在单独的函数中,您将实现评分模式。写一个 从用户给出的文件中读取学生姓名及其测试分数的程序。 文件中的前两个值将表示学生数量,然后是测试数量。 然后,程序应计算每个学生的平均考试分数并分配适当的分数 等级(A,B,C,D,E或F)以及每次测试的平均值。您的程序必须执行以下操作 功能。 a)void函数calculateAverage,用于确定每个学生的考试成绩的平均值。

下载txt文件:

汤姆91 67 84 50 69

Suzy 74 78 58 62 64

彼得55 95 81 77 61

保罗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

马克53 61 72 83 73

Anna 64 91 61 53 68

这是我到目前为止所做的:

public class Grades {



private static final String FILENAME2 = "/Users/Jarvis/Documents/Students.txt";

public static void main(String[] args) {
    BufferedReader br = null;
    FileReader fr = null;

    try {

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

        String students [] = new String[10];
        int [][] grades = new int [10][5];
        String[] words;
        String sCurrentLine;
        int counter=0;
        br = new BufferedReader(new FileReader(FILENAME2));

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

            words = sCurrentLine.split(" ");
            students[counter]=words[0];
            System.out.print(students[0]+ " ");

            for (int i=1; i < words.length; i++){
               grades[counter][i-1]=Integer.parseInt(words[i]);

            } //end of outer for loop


            System.out.println();

        } // end of while loop



         } catch (IOException e) {

        e.printStackTrace();

    }

}//end of main

public static void calculateAverage (int grade [][]){

    int temp;
    int sum;


} // end of calculateAverage()

1 个答案:

答案 0 :(得分:0)

首先,您需要在循环底部添加counter++;

至于平均值,这将计算每个学生成绩的平均值(假设格式为grade[student][grade]),而不是打印学生的成绩grade[student],然后是平均成绩grades.get();

public static void calculateAverage (int grade[][]){

    ArrayList<Double> averageGrades = new ArrayList<Double>();
    int sum = 0;

    for(int student = 0; student < grade.length; student++){
    for(int i = 0; i < grade[student].length; i++){

        if(i == 0){
            sum = grade[student][i];
        }else if(i == grade[student].length - 1){

            sum += grade[student][i]; //Add next grade to sum

            averageGrades.add((double) (sum/i)); //Divide the sum by the number of grades (average)

        }else{

        sum += grade[student][i]; //Add next grade to sum

        }

    }
}

    for(int counter = 0; counter < averageGrades.size(); counter++){
        //Cycle through the grades and print them after the student name (grade[counter])
        System.out.println(grade[counter] + " " + averageGrades.get(counter));

    }



  }