输入三个数字,然后使用嵌套的if降序排列

时间:2019-10-29 04:52:56

标签: java netbeans bluej

我只能提出这么多。请耐心帮助我,我才14岁!! 该程序只能使用嵌套的ifs来完成。

import java.util.Scanner;
public class P2
{
   public static void main(String args[])
   {
       Scanner sc=new Scanner(System.in);
       System.out.println("Enter three number");
       int n1=sc.nextInt();
       int n2=sc.nextInt();
       int n3=sc.nextInt();
       int max=0,min=0;
       if(n1>n2)
       {
           if(n1>n3)
           {max=n1;}
           if(n3>n1)
        }  
    }
}

2 个答案:

答案 0 :(得分:1)

您在这里!仅使用ifelse

if (n1 >= n2) {
    if (n1 >= n3) {
        if (n2 >= n3) {
            System.out.printf("%d, %d, %d", n1, n2, n3);
        } else {
            System.out.printf("%d, %d, %d", n1, n3, n2);
        }
    } else {
        if (n2 >= n3) {
            System.out.printf("%d, %d, %d", n2, n3, n1);
        } else {
            System.out.printf("%d, %d, %d", n3, n1, n2);
        }
    }
} else {
    if (n1 >= n3) {
        if (n2 >= n3) {
            System.out.printf("%d, %d, %d", n2, n1, n3);
        } else {
            System.out.printf("%d, %d, %d", n3, n2, n1);
        }
    } else {
        if (n2 >= n3) {
            System.out.printf("%d, %d, %d", n2, n3, n1);
        } else {
            System.out.printf("%d, %d, %d", n3, n2, n1);
        }
    }
}

答案 1 :(得分:0)

您可以通过多种方式解决它。我的第一次尝试如下:

import java.util.Scanner;

public class P2 {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter three number");
        int n1 = sc.nextInt();
        int n2 = sc.nextInt();
        int n3 = sc.nextInt();
        int max = 0, min = 0, med = 0;
        if (n1 > n2 && n1 > n3) {
            max = n1;
            if (n2 > n3) {
                min = n3;
                med = n2;
            } else {
                min = n2;
                med = n3;
            }
        } else if (n2 > n1 && n2 > n3) {
            max = n2;
            if (n1 > n3) {
                min = n3;
                med = n1;
            } else {
                min = n1;
                med = n3;
            }
        } else if (n3 > n1 && n3 > n2) {
            max = n3;
            if (n2 > n1) {
                min = n1;
                med = n2;
            } else {
                min = n2;
                med = n1;
            }
        }
        System.out.println(max + " " + med + " " + min);
    }
}

如果您仔细观察,内部if-else将重复使用不同的数字。因此可以提取为返回最小-最大对的方法。

import java.util.Scanner;

public class P2 {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter three number");
        int n1 = sc.nextInt();
        int n2 = sc.nextInt();
        int n3 = sc.nextInt();
        int max = 0, min = 0, med = 0;
        if (n1 > n2 && n1 > n3) {
            max = n1;
            MinMaxPair minMaxPair = getMinMaxPair(n2, n3);
            min = minMaxPair.getMin();
            med = minMaxPair.getMax();
        } else if (n2 > n1 && n2 > n3) {
            max = n2;
            MinMaxPair minMaxPair = getMinMaxPair(n1, n3);
            min = minMaxPair.getMin();
            med = minMaxPair.getMax();
        } else if (n3 > n1 && n3 > n2) {
            max = n3;
            MinMaxPair minMaxPair = getMinMaxPair(n1, n2);
            min = minMaxPair.getMin();
            med = minMaxPair.getMax();
        }
        System.out.println(max + " " + med + " " + min);
    }

    private static class MinMaxPair {
        private int min;
        private int max;

        public MinMaxPair(int n2, int n3) {
            this.min = n2;
            this.max = n3;
        }

        public int getMin() {
            return min;
        }

        public int getMax() {
            return max;
        }
    }

    public static MinMaxPair getMinMaxPair(int n1, int n2) {
        if (n1 > n2) {
            return new MinMaxPair(n2, n1);
        } else {
            return new MinMaxPair(n1, n2);
        }
    }
}