我需要程序向用户询问数字,然后找到三者中的最大值和最小值

时间:2015-10-04 22:17:30

标签: java

我在这里有代码,但我遇到了问题。

public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);
    System.out.println("Please input 3 integers: ");
    int w = Integer.parseInt(keyboard.nextLine());
    int a = Integer.parseInt(keyboard.nextLine());
    int s = Integer.parseInt(keyboard.nextLine());
    int max = Math.max(w, a);
    if (max > a) {
        max = Math.max(a, s);
        max = Math.max(a, s);
        int min = Math.min(w, a);
        if (min > a) {
            min = Math.min(a, s);
            min = Math.min(a, s);
        }
    } else {
        max = Math.max(a, s);
    }
    System.out.println("The max of three is: " + max);
    System.out.println("the minimum of the three is: " + min);
}

3 个答案:

答案 0 :(得分:1)

int maximum = Math.max(w, Math.max(a, s));
int minimum = Math.min(w, Math.min(a, s));

答案 1 :(得分:1)

请注意,您不需要读取行,然后将其解析为整数。您可以使用scanner.nextInt()方法。考虑到这一点,您的程序将如下所示:

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int n1 = scanner.nextInt();
    int n2 = scanner.nextInt();
    int n3 = scanner.nextInt();

    int max = Math.max(n1, n2);
    max = Math.max(max, n3);
    System.out.println("Max: " + max);      


    int min = Math.min(n1, n2);
    min = Math.min(min, n3);
    System.out.println("Min: " + min);
}

答案 2 :(得分:0)

这不是真正需要改进的编程,而是思考。

所以让我们从“w”开始吧。一旦进入,您就知道这是当前的最大和最小数量。

所以马上罢了。您可以声明max = w和min = w。

这样你就有了自己的出发点。剩下的练习是确定剩下的数字是否可以击败“w”作为最大值或最小值。

接下来,将“a”与存储在“max”中的当前最大值进行比较。哪一个最大? max = Math.max(max,a);

如果是“a”,则max将变为“a”。如果a小于当前最大值,则max将保持不变。

现在你可以用“s”做同样的事了。 max = Math.max(max,s);

现在您已经完成了所有输入,剩下的就是最大值。您可以打印出变量“max”,然后就完成了。

完全相同的最小值,你也会得到最小值。

另一方给出的编程答案是正确的方法,我希望这可以解释为什么这些是很好的方法。

考虑每一步以及您希望如何实现目标。将其拆分为可管理的步骤,例如找到最大值然后找到最小值。您不必一次尝试解决所有问题。一旦你弄明白每一个,你就可以轻松地将它们组合成更有效的东西,就像@Michael提供的那样。

但第一个关键是理解为什么,而不是如何。