1

問題は、3 つの整数を並べ替えるプログラムを作成することです。整数は入力ダイアログから入力され、変数 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

問題は、これら 3 つの数字の 6 つの可能な配置のうち 3 つだけをチェックすることです。また、これら 3 つの場合でも、実際には数値を並べ替えているのではなく、並べ替えた順序で表示しているだけであることに注意してください。つまり、変数num1num2、および を再割り当てしていませんnum3

3 つの数字の考えられる配置をすべてチェックしたり、完全な並べ替えアルゴリズムを実装したりする代わりに、数字のペアを比較して交換することもできます。このようにして、3 つの数値のすべての順列を並べ替えながら、比較の回数を大幅に減らすことができます。

  • num1 > num2 の場合、num1 と num2 を入れ替えます
  • num2 > num3 の場合、num2 と num3 を入れ替えます
  • num1 > num2 の場合、num1 と num2 を再び入れ替える

これら 3 回のスワップの後、番号はソートされた順序になります。

もちろん、3 つ以上の数値がある場合、これは実用的ではなく、完全な並べ替えアルゴリズムを (演習用に) 実装するか、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 に答える