【问题标题】:Using Java Arrays to get min & max使用 Java 数组获取最小值和最大值
【发布时间】:2013-02-25 23:15:53
【问题描述】:

感谢您的帮助。

这是作业:

计算机技术讲师有一个 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);

}
}

【问题讨论】:

    标签: java arrays max min


    【解决方案1】:

    编辑:

    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;
    

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

    【讨论】:

    • 根据说明,最小值和最大值似乎不应该在 65 到 100 之间。它似乎不希望以任何它想要的方式对它们进行平均或加权总数。
    • @AlliK:谢谢,是的,我同意,这就是我编辑答案并添加最后一行的原因。
    • 我认为@Christf 没有意识到代码是正确的,尽管基于说明,所以我只是想指出这一点。最小值和最大值的代码是正确的。
    • 嗯,我觉得有点尴尬。我应该更仔细地阅读,因为它说“扫描有总数的数组”谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 2010-11-23
    • 2011-08-16
    • 2017-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多