1

问题是编写一个对三个整数进行排序的程序。整数从输入对话框输入并分别存储在变量 num1、num2 和 num3 中。程序对数字进行排序,使得 num1 <= num2 <= num3。

实际上我这样做了,但结果仅适用于 1 ,2 和 3 个数字!

当我输入任何不同的数字时,它不会显示我想要的结果!

这是我的代码..

import javax.swing.JOptionPane;

public class number order {

 public static void main(String[] args) {

 int num1;
 int num2;
 int num3;

    String n = JOptionPane.showInputDialog(null, "input NUM 1 " );
           num1 = Integer.parseInt(n);
    String u = JOptionPane.showInputDialog(null, "input NUM 2 " );
         num2 = Integer.parseInt(u);
    String m = JOptionPane.showInputDialog(null, "input NUM 3 " );
        num3 = Integer.parseInt(m);

    if (num1<=num2&& num2<=num3)
        System.out.println( num1+"<="+ num2+"<="+num3 );
    if(num2<=num1&&num1<=num3)
        System.out.println(num2+"<="+num1+"<="+num3);
    if (num3<=num1&&num1<=num2)
        System.out.println(num3+"<="+num1+"<="+num2);


    // TODO code application logic here
 }
}
4

5 回答 5

0

怎么样

int min = min(min(num1,num2),num3);
int max = max(max(num1,num2),num3);
int mid = num1 + num2 + num3 - min - max;
System.out.println(min+"<="+mid+"<="+max);
于 2013-10-18T08:58:10.293 回答
0
int[] all = new int[]();
num1 = Integer.parseInt(n);
all[0] = num1;
num2 = Integer.parseInt(u);
all[1] = num1;
num3 = Integer.parseInt(m);
all[2] = num1;
for(int i=0; i <all.length ;i++){
  if(i!=0 && all[i]< all[i-1]){
     temp = all[i-1];
     all[i-1] = all[i];
     all[i] = temp; 
  }
}

所有人都会有排序数组
或更简单

2 个步骤
1) 将所有内容添加到数组中。
2) 打电话Arrays.sort(array)

于 2013-10-18T08:22:20.093 回答
0

问题是您只检查这三个数字的六种可能排列中的三种。另请注意,即使对于这三个,您实际上也没有对数字进行排序,而只是按排序顺序打印它们,也就是说,您永远不会重新分配变量num1num2num3

作为检查三个数字的所有可能排列或实施完整排序算法的替代方法,您还可以比较和交换数字。这样,您就可以少得多的比较,同时仍然能够对三个数字的所有排列进行排序。

  • 如果 num1 > num2,交换 num1 和 num2
  • 如果 num2 > num3,交换 num2 和 num3
  • 如果 num1 > num2,再次交换 num1 和 num2

在这三个交换之后,数字按排序顺序排列。

当然,如果你有超过三个数字,这是不切实际的,你应该实现一个完整的排序算法(用于练习)或使用其中一个内置函数,例如Arrays.sort(用于现实生活)。

于 2013-10-18T08:45:30.110 回答
0
if(num1 < num2){ if(num3 < num1) System.out.println("num2 > num1 > num3");}
else{ if(num2 < num3) System.out.println("num3 > num2 > num1"); else System.out.println("num1 > num2 > num3");}

按降序排列。

希望能帮助到你。

于 2013-10-18T09:08:38.897 回答
0

您尚未检查所有案例:

1 < 2 < 3
1 < 3 < 2
2 < 1 < 3
2 < 3 < 1
3 < 1 < 2
3 < 2 < 1

但是,像这样检查所有情况是没有用的。排序数组会更容易:

int arr[3]={num1,num2,num3}
java.utils.Arrays.sort(arr);
println(arr[0] + "<=" + arr[1] + "<=" + arr[2]);
于 2013-10-18T08:14:09.607 回答