首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分级模式: 2D数组和平均打印

分级模式: 2D数组和平均打印
EN

Stack Overflow用户
提问于 2017-04-12 23:58:21
回答 1查看 3K关注 0票数 0

我对java非常陌生,我的老师给了我们这个作业,我们可以在网上寻找如何让代码工作的方法。我感到非常迷茫,因为我只使用过一次数组,而双数组只使用过一次。我真的需要一些帮助和解释,我将如何让这个程序运行。

到目前为止,我的老师已经教我如何把学生和年级分开,但是他没有教我如何打印成绩。此外,当您有一个双数组时,如何计算每个学生的平均行数,而不是列数?

分级模式:在一个单独的函数中,您将实现一个分级模式。编写一个程序,从用户给出的文件中读取学生的名字和他或她的考试成绩。文件中的前两个值将表示学生的数量和测试的数量。然后,该程序应计算每个学生的平均考试成绩,并分配适当的分数(A、B、C、D、E或F)以及每项考试的平均数。您的程序必须执行下列功能。( a)一个空函数calculateAverage,用于确定每个学生的平均考试成绩。

以下是txt文件:

汤姆91 67 84 50 69

苏西74 78 58 62 64

彼得55 95 81 77 61

保罗91 95 92 77 86

戴安91 54 52 53 92

埃米莉82 71 66 68 95

娜塔莉97 76 71 88 69

本62 67 99 85 94

马克53 61 72 83 73

安娜64 91 61 53 68

以下是我到目前为止所拥有的:

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-13 00:53:24

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

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

代码语言:javascript
复制
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));

    }



  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43381456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档