首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用户输入的总和、平均、最低和最高分数(条件控制结构)

用户输入的总和、平均、最低和最高分数(条件控制结构)
EN

Stack Overflow用户
提问于 2015-09-08 18:17:42
回答 3查看 3.8K关注 0票数 0

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

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

我现在就是这样被困住的。我上一次只有Q3,它只显示平均和最低的分数,没有最高的分数。请帮我把这件事做好!

代码语言:javascript
运行
复制
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);
    }

  }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-09-08 18:54:20

在当前的解决方案中,您有一些基本问题,如else if (Q3 > Q3)

您也不检查是否相等,即if (Q2 >= Q3)

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

代码语言:javascript
运行
复制
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);
    }

}

编辑:

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

代码语言:javascript
运行
复制
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
    }
}
票数 5
EN

Stack Overflow用户

发布于 2015-09-08 21:24:04

还可以将这些值插入数组中,遍历该数组并查找min和max值。

如下所示:

代码语言:javascript
运行
复制
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]);

}
票数 2
EN

Stack Overflow用户

发布于 2015-09-08 19:42:34

如果不允许使用数组和/或循环,这里有一种方法。您可以理解为什么数组使其更简洁;您将不希望在100个问题上这样做。我忽略了最大值的计算,因为它有点相似。

代码语言:javascript
运行
复制
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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32464628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档