2016-07-11 7 views
4

ユーザ入力の整数をスペースで区切って並べ替えることを試みています。Javaの組み込みソート方法を使用せずにユーザ入力を動的にソート

入力:4 2 1 5 9 - 予想される出力:1 2 3 4 5 9

私は、ユーザーがEnterキーを押した後にループ内でループを停止する方法を見つけ出すことはできません。ここで、i < num。私のコードは整数を1つずつ入力すると動作します。すべてのヘルプはあなたのコードは非常にほぼ正しかった

class javasort { 
    public static void main(String[] args) { 
    int num, i, j, temp; 
    Scanner input = new Scanner(System.in); 

    // System.out.println("Enter the number of integers to sort:"); 
    // num = input.nextInt(); 

    num = 5; // <-- the user input should be dynamic 

    int array[] = new int[num]; 

    System.out.println("Enter integers: "); 

    for (i = 0; i < num; i++) 

     array[i] = Integer.parseInt(input.next()); 
     num = i; // make array as big as input ? 

    for (i = 0; i < (num - 1); i++) { 
     for (j = 0; j < num - i - 1; j++) { 
      if (array[j] > array[j + 1]) { 
       temp = array[j]; 
       array[j] = array[j + 1]; 
       array[j + 1] = temp; 
      } 
     } 
    } 

    System.out.println("Sorted list of integers:"); 

    for (i = 0; i < num; i++) 
     System.out.println(array[i]); 
}} 
+1

中括弧がありません。最初のループの本体は、唯一のステートメントで構成されています。アドバイス:常に 'if'ステートメントとループボディに中括弧を使用してください。 –

+0

これが意図したループであれば、疑わしいものです。 'num = i;'なら 'i == num'なので、' i

+0

新しい番号を "見つける"たびに配列のサイズを変更するつもりならば、単にnumを変更するだけでそれを達成することはできません。 –

答えて

6

いただければ幸いです、そして、あなたが持っていた最高のヒントを削除しました。 Scanner.nextInt()

よう
num = input.nextInt();   // <-- get the count. 
int array[] = new int[num]; 
System.out.println("Enter integers: "); 
for (i = 0; i < num; i++) {  // <-- don't rely on indentation for flow control. 
    array[i] = input.nextInt(); // <-- get a number "num" times. 
} 
+0

私は理解しています。しかし、私は入力と出力がこのようになるようにしたい。Input:4 2 1 5 9 - 期待される出力:1 2 4 5 9。 – user3765848

+0

最初の入力は数字のカウントでなければなりません。だから、5 4 2 1 5 9それをする必要があります。 –

+0

はいわかっています。しかし、私は動的配列を探しています。ユーザーが入力する必要がある長さを指定する必要はありません。この修正は5 4または55 77 11 – user3765848

0

はそう単純で、まだそれほど効率的な使用:

Arrays.sort(array); 
+0

私はArrays.sortを使用できません。それは私が組み込みのライブラリを使わなければ意味したものです – user3765848

+0

:Scanner、SystemとIntegerは組み込みのライブラリです – FisheyLP

0

あなたはBubble sortアルゴリズムを使用することができます。それは最悪の場合にo(n^2)を実行します。コードをここに置く必要はありませんでしたが、あなたはそれを行うことができます。それは20行以下しか取れません。

関連する問題