Java中输入三个数按升序输出——妈妈再也不用担心我不会输入三个数排序了

Java中输入三个数按升序输出

题目:输入三个数,并将三个升序输出

最笨但不完整的做法:
if(a>b){
            if(b>c){
                System.out.print(c+" "+b+" "+a);
            }else if (c>b) {
                if (c>a) {
                    System.out.print(b+" "+a+" "+c);
                }
                else {
                    System.out.print(b+" "+c+" "+a);
                }
            }
        }else if(a<b){
            if(a>c){
                System.out.print(c+" "+a+" "+b);
            }else if (c>a) {
                if (c>b) {
                    System.out.print(a+" "+b+" "+c);
                }
                else {
                    System.out.print(a+" "+c+" "+b);
                }
            }
        }

进行多次比较,但是有个问题:相等的情况没有考虑,所以还要加代码很麻烦.
改进一下,用交换的方法:

int temp =0;
        if(a>b){
          temp=a;a=b;b=temp;
        }
        if(a>c){
          temp=a;a=c;c=temp;

        }    
        if(b>c){
          temp=b;b=c;c=temp;
        }
        System.out.print(a+" "+b+" "+c);

利用三目运算符?:来做:

            int max1=0,mid1=0,min1=0;
            if(a>b)
            {
                max1=a>c?a:c;
                mid1=b>c?b:c;
                min1=b>c?c:b;
            }
            else
            {
                max1=b>c?b:c;
                mid1=a>c?a:c;
                min1=a>c?c:a;
            }
            System.out.println(min1+" "+mid1+" "+max1);

把最值存起来,而且相等的情况也包括了,很方便,当然首先你得清楚三目运算符?:是怎么回事。

再改进一下:

         int max1=(a>b?a:b)>c? (a>b?a:b):c;
         int min1=(a<b?a:b)<c? (a<b?a:b):c;
         int mid1 =(a+b+c)-max-min;
         System.out.println(min1+" "+mid1+" "+max1);

个人认为这样最好最简洁,清晰明了,妈妈再也不用担心我不会输入三个数排序了。

猜你喜欢

转载自blog.csdn.net/dz77dz/article/details/81413565