使用分支if else语句进行排序

时间:2014-02-14 18:30:46

标签: java

我一直在1/3上输出错误的输出。当我输入132或231时,所需的输出为123。当我输入321时,输出为132,我在这里缺少什么?

import java.util.Scanner;

public class Proj3 {
    private static int min;
    private static int max;
    private static int mid;

    public static void main (String[] args){
        Scanner keyboard = new Scanner( System.in);
        System.out.println("Enter three whole numbers <integers> to be sorted");
        int n1 = keyboard.nextInt();
        int n2 = keyboard.nextInt();
        int n3 = keyboard.nextInt();

        if (n1 <= n2 && n1 <= n3){
            min = n1;

            if (n2 <= n3){
                mid = n2;
                max = n3;
            } else{
                mid = n3;
                max = n2;
            }
        }
        else if(n2 <= n3){
            min = n3;
            mid = n1;
            max = n2;
        }else{
            min = n3;
            mid = n1;
            max = n2;
        }
        System.out.println("Here are the three numbers sorted:"+min+""+mid+""+max+"");
    }
}

4 个答案:

答案 0 :(得分:1)

而不是分支if,你可以使用Math.minMath.max来获取最小和最大数字(中间的数字将是剩下的唯一数字)

答案 1 :(得分:0)

你忘了if-branch。对于输入321,您在else块中运行并导致您的输出。试着弄清楚你忘了哪个案例,如果是这样的话就把它添加到另一个案例中。

修改 如果n1> n2目前尚不清楚它是否小于或大于n3。

答案 2 :(得分:0)

这是我的解决方案,我感谢那些帮助我思考@ZouZou,@ ROT13,@ Laf的人。

else if(n2 >= n3 && n2 <= n1){
       max = n1;
       mid = n2;
       min = n3;}

答案 3 :(得分:0)

您可以稍微更改一下代码并使用数组。从扫描仪读入值,然后将它们添加到阵列中。从数组中,您可以使用.sort()方法自动将数字按顺序排列。

Scanner input = new Scanner(System.in); // Starts scanner
    int[] numbers = new int[3]; // Sets length to 3

for (int i = 0; i < numbers.length; i++) // Loops length
{
    System.out.println("Please enter number"); // Asks for input
    numbers[i] = input.nextInt(); // Adds to array
}

对值进行排序后,您可以调用.sort()数组上的int[]方法。我希望这是有道理的。你可以使用你所有的if语句,但为什么要比它应该更难?如果您需要任何帮助,请告诉我