评分方案:二维数组和平均打印

问题描述:

我对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

这里是我有这么远:

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() 
+0

计数器应该是counter ++。 – Omore

首先,你需要在你的底部添加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)); 

    } 



    }