我对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 86Diane 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()
答案 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));
}
}