【问题标题】:Sum, Average, Lowest and Highest scores of user input (Conditional Control Structures)用户输入的总和、平均、最低和最高分数(条件控制结构)
【发布时间】:2026-01-24 09:45:01
【问题描述】:

我有以下家庭作业。我们的老师没有教好我们,所以我需要额外的帮助。

编写一个 Java 程序,输入一个学生在五个测验中的五个分数。输出五个分数的总和和平均值。确定并显示最高分和最低分。

这就是我现在陷入困境的方式。我上次只有 Q3,它只显示平均分和最低分,没有最高分。请帮我完成这项工作!

import java.util.Scanner;
import java.io.*;

class Quizzes
{

    public static void main(String[] args) {
    int Q1, Q2, Q3, Q4, Q5;
    double average;

    Scanner keyboard = new Scanner(System.in);
    System.out.print("Enter Quizzes: ");
    Q1 = keyboard.nextInt();
    Q2 = keyboard.nextInt();
    Q3 = keyboard.nextInt();
    Q4 = keyboard.nextInt();
    Q5 = keyboard.nextInt();

    average = (Q1 + Q2 + Q3 + Q4 + Q5) / 5;
    System.out.println("Average Score is: " + average);

    if (Q1 < Q2 && Q1 < Q3) {
        System.out.println("The lowest score is: " + Q1);
    } else if (Q2 < Q1 && Q2 < Q3) {
        System.out.println("The lowest score is: " + Q2);
    } else if (Q3 < Q1 && Q2 < Q3) {
        System.out.println("The lowest score is: " + Q3);
    } else if (Q1 > Q2 && Q1 > Q3) {
        System.out.println("The highest score is: " + Q1);
    } else if (Q2 > Q1 && Q2 > Q3) {
        System.out.println("The highest score is: " + Q2);        
    } else if (Q3 > Q3 && Q1 > Q2) {
        System.out.println("The highest score is: " + Q3);
    } else {
        System.out.println("The lowest score is: " + Q3);
    }

  }
}

【问题讨论】:

  • 欢迎来到*。从您的问题的复制/粘贴性质很明显,这是一个作业问题。我们不介意帮助这些,但目前格式化的方式是“为我做”,我们不是在这里做的。如果我们是,我们会在最后获得学位;)。用一些你尝试过的例子来更新你的问题,如果可以的话,我们会提供帮助。
  • 对不起,如果看起来像那样,但实际上是因为我知道我的作业数量(20)和截止日期(后天)以及我们老师教授的知识“少于 15 %”,我确信我不能按时完成所有这些。在学习课程方面,我是一个非常好的学生,就像我说的那样,我们的老师没有教好我们,这就是为什么我在这里寻求你们的帮助..我不是故意的让你做,我就传给我们的老师。我只有很少的时间来学习这一切,但请放心,我会在这里得到什么
  • 我会向你的机构提出这个问题,而不是在这里。如果他像你说的那么坏,那么你不会是唯一一个经历过这种情况的人。
  • 我一定会复习、练习和学习。这就是我的目的。我不会让你为我的成绩做这件事,我只是没有时间,因为截止日期只有 24 小时。这几天我一直在做这些。
  • 如果我们只是在这里转储一个解决方案,您将一无所获。

标签: java sum average


【解决方案1】:

在您当前的解决方案中,您有几个基本问​​题,例如else if (Q3 &gt; Q3)

您也不检查相等性,即if (Q2 &gt;= Q3)

您当前技术的主要问题是您有大量 if/else 语句,更好的解决方案是使用如下所示的数组:

public class Quizzes {

    public static void main(String[] args) {

        double Q1, Q2, Q3, Q4, Q5;
        double average = 0;
        double max = 0;
        double count = 0;
        double[] userInput = new double[5];

        Scanner keyboard = new Scanner(System.in);
        System.out.print("Enter Quizzes: ");
        System.out.println("");
        Q1 = keyboard.nextInt();
        userInput[0] = Q1;
        Q2 = keyboard.nextInt();
        userInput[1] = Q2;
        Q3 = keyboard.nextInt();
        userInput[2] = Q3;
        Q4 = keyboard.nextInt();
        userInput[3] = Q4;
        Q5 = keyboard.nextInt();
        userInput[4] = Q5;
        keyboard.close();

        for (int i = 0; i < userInput.length; i++) {
            count = count + userInput[i];
            average = count / 5;
        }
        System.out.println("Average Score is: " + average);
        Arrays.sort(userInput);
        System.out.println("The lowest score is: " + userInput[0]);
        max = userInput[userInput.length - 1];
        System.out.println("The highest score is: " + max);
    }

}

编辑:

既然您已经通知我们您不能使用数组,那么下面的代码将在不过多修改您的原始方法的情况下完成这项工作:

public class Quizzes {

    public static void main(String[] args) {

        double Q1, Q2, Q3, Q4, Q5;
        double average = 0;
        double lowest = 0;

        Scanner keyboard = new Scanner(System.in);
        System.out.print("Enter Quizzes: ");
        System.out.println("");
        Q1 = keyboard.nextDouble();
        Q2 = keyboard.nextDouble();
        Q3 = keyboard.nextDouble();
        Q4 = keyboard.nextDouble();
        Q5 = keyboard.nextDouble();
        keyboard.close();

        average = (Q1 + Q2 + Q3 + Q4 + Q5) / 5;
        System.out.println("Average Score is: " + average);

        if (Q1 <= Q2 && Q1 <= Q3 && Q1 <= Q4 && Q1 <= Q5) {
            lowest = Q1;
        } else if (Q2 <= Q1 && Q2 <= Q3 && Q2 <= Q4 && Q2 <= Q5) {
            lowest = Q2;
        } else if (Q3 <= Q1 && Q3 <= Q2 && Q3 <= Q4 && Q3 <= Q5) {
            lowest = Q3;
        } else if (Q4 <= Q1 && Q4 <= Q2 && Q4 <= Q3 && Q4 <= Q5) {
            lowest = Q4;
        } else if (Q5 <= Q1 && Q5 <= Q2 && Q5 <= Q3 && Q5 <= Q4) {
            lowest = Q5;
        }

        System.out.println("The lowest score is: " + lowest);
        // THEN DO SIMILAR TO GET HIGHEST SCORE
    }
}

【讨论】:

  • 谢谢!抱歉,但我没有包括我们应该在条件控制结构中而不是数组中执行此操作。无论如何我都会保存它,它将作为我的参考。我将在此帮助下练习,谢谢!
  • @Lance 也请在这里帮助我...请.. Smoggers 使用数组完成了它,但我的错误是因为我没有包括它应该使用条件控制结构完成。
  • 你还没看过吗?这是网址*.com/questions/32464628/…
  • @FinnDonovan 我已经编辑了我的答案,请投票,这样我在制作 2 个合适的解决方案方面的时间和精力就会得到回报:)
  • 谢谢@Smoggers...它现在正在工作... SUM 不包括在内,但我已设法插入它,也是最高的...谢谢您的帮助。
【解决方案2】:

如果您不允许使用数组和/或循环,这是一种方法。你可以看到为什么数组使它更简洁;你不会想为 100 个问题做这个。我省略了最大值的计算,因为它非常相似。

int min = Integer.MAX_VALUE;
if (Q1 < min) {
    min = Q1;
}
if (Q2 < min) {
    min = Q2;
}
if (Q3 < min) {
    min = Q3;
}
if (Q4 < min) {
    min = Q4;
}
if (Q5 < min) {
    min = Q5;
}

【讨论】:

  • 谢谢@Mike...我现在就用您提供的内容尝试一下。我只能在完全理解我的所有课程后才能区分它们,因为我的老师并没有真正教好我们...我们每周只开一次会,这一切都让我死了......几分钟后会回复你..
  • 我复制了 Smoggers 提供的内容,并用您提供的内容替换了数组,它起作用了,问题是平均值始终为零并且总和不出现。
  • 这就是我所做的。双 Q1、Q2、Q3、Q4、Q5;双平均 = 0;双最大 = 0;双倍计数 = 0;双[]用户输入=新双[5];双倍总和=计数;平均值 = 计数/5;
【解决方案3】:

您还可以将这些值插入到数组中,遍历该数组并查找最小值和最大值。

像这样:

int[] arr = new int[5];
arr[0] = Q1;
arr[1] = Q2;
arr[2] = Q3;
arr[3] = Q4;
arr[4] = Q5;


int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;

for (int i=0; i<arr.length; i++){

    min = Math.min(min, arr[i]);
    max = Math.min(max, arr[i]);

}

【讨论】:

  • 再次嗨...我是否允许发布我自己的问题的“答案”只是为了能够发布我在我的程序中所做的我希望读者/解决者看到的事情?我无法将代码作为评论发布。
  • 是的,您可以,您可以将其作为答案或作为问题的编辑。
  • @RoeyGolzarpoor:不,我们不鼓励在此处的问题中回答,除非问题已关闭且无法提供新答案。添加一个自我回答是这样做的方法。
最近更新 更多