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=b>c?c:b;
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);
个人认为这样最好最简洁,清晰明了,妈妈再也不用担心我不会输入三个数排序了。