1

感谢您的帮助。

这是作业:

计算机技术讲师有一个 10 名学生的小班。教师通过管理 2 次期中考试和期末考试来评估学生在课堂上的表现。编写一个程序,提示教师输入期中 1 的 10 个等级,并将这些数字存储在一个数组中。接下来提示 10 年级的期中 2 并将这些数字存储在不同的数组中。接下来提示期末考试的 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);

}
}
4

1 回答 1

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;

但是,您当前的解决方案实际上可能是正确的解决方案。

于 2013-03-10T20:49:19.503 回答