谢谢你的帮助。
这是作业:
计算机技术教练有一小班10名学生。教师通过管理2个期中考试和期末考试来评估班级学生的表现。 编写一个程序,提示教师输入中学1的10个等级并将这些数字存储在一个数组中。下一个提示中期2的10个等级并将这些数字存储在不同的数组中。下次提示参加期末考试的10个等级并将其存储在不同的阵列中。接下来将midterm1添加到midterm2到Final并将总计存储在不同的数组中。 接下来,扫描包含总计的数组,并确定最低成绩和最高成绩。告知讲师最低成绩和最高成绩。
这两个粗体短语是我遇到问题的地方。一切都有效,除了最低等级和最高等级。在我只输入65到100之间的数字后,它告诉我的是:
最高考试成绩为:276最低考试成绩为:249
这是我的代码:
import java.util.Scanner;
public class Arrays {
public static void main(String[] args) {
// Create a scanner
Scanner input = new Scanner(System.in);
// Prompt for the 1st mid term
int [] midTerm1 = new int[10];
int [] midTerm2 = new int[10];
int [] finalExam = new int[10];
int [] grades = new int[10];
for (int i = 0; i < midTerm1.length; i++){
System.out.println("Enter the 10 Mid Term 1 grades: ");
midTerm1[i] = input.nextInt();
}
// Prompt for the 2nd mid term
for (int i = 0; i < midTerm2.length; i++){
System.out.println("Enter the 10 Mid Term 2 grades: ");
midTerm2[i] = input.nextInt();
}
// Prompt for Final grades
for (int i = 0; i < finalExam.length; i++){
System.out.println("Please enter a Final Exam grade: ");
finalExam[i] = input.nextInt();
}
for (int i = 0; i < grades.length; i++){
grades[i] = (midTerm1[i] + midTerm2[i] + finalExam[i]);
}
int minGrade = grades[0];
int maxGrade = grades[0];
for (int i = 0; i < grades.length; i++)
{
if (minGrade > grades[i])
minGrade = grades[i];
if (maxGrade < grades[i])
maxGrade = grades[i];
}
System.out.print("The highest test score is: " + maxGrade);
System.out.print("The lowest test score is: " + minGrade);
}
}
答案 0 :(得分:4)
编辑:
grades[i] = (midTerm1[i] + midTerm2[i] + finalExam[i]);
您的代码实际上可能是正确的。由于您将三个测试分数加在一起,因此期望成绩不会介于65到100之间,而是介于195到300之间。
如果你想要一个65到100之间的数字,这需要除以3:
grades[i] = (midTerm1[i] + midTerm2[i] + finalExam[i]) / 3;
或者找到其他方法规范化成绩。例如,如果决赛是成绩的50%那么你可以:
grades[i] = (25 * midTerm1[i] + 25 * midTerm2[i] + 50 * finalExam[i]) / 100;
但你现在的解决方案实际上可能是正确的解决方案。