2016-11-01 7 views
0

私の仕事を実行しようとすると問題が発生します。 私はコンソールでいくつかの数字を入れなければなりません。昇順に配列して配列に保存する必要があります。 私は、メソッドhasNextがString.nextLine()でうまくいくと思っていましたが、まだループのようです。ヘルプスキャナを使用している間に循環します.Next()

import java.util.Scanner; 

public class OrdinamentoMaggiore{ 
    public static void main(String[] args){ 
     Scanner sc = new Scanner(System.in); 
     System.out.println("Digita dei numeri e te li mettero' in ordine crescente: "); 
     String Numeri = sc.nextLine(); 
     int dimArray = 0; 
     while (sc.hasNext(Numeri)){ 
      dimArray++; 
      System.out.println("Dimensione array: " + dimArray); 
     } 
     int min = 0, max = 0, temp; 
     int[] mioArray = new int[dimArray]; 
     for (int i = 0; i <= mioArray.length; i++){ 
      mioArray[i] = Integer.parseInt(sc.next(Numeri)); 
     }  
     for (int j = 0; j <= mioArray.length; j++){ 
      for (int h = 1; h <= mioArray.length; h++){ 
       if (mioArray[j] < mioArray[h]){ 
        continue; 
       } 
       else { 
        temp = mioArray[j]; 
        mioArray[j] = mioArray[h]; 
        mioArray[h] = temp; 
       } 
      } 
     } 
     System.out.println("Min: " + mioArray[0]); 
     System.out.println("Max: " + mioArray[dimArray]); 
     sc.close(); 
    } 
} 
+0

数字以外の文字を入力するまでポーリングしてから、すべての入力を処理するのはなぜですか。 – user123

+0

例: 入力:12 32 1 2 3停止 while(sc.hasNextInt(Numeri))?? – Alberto32

+0

http://stackoverflow.com/a/9592624/1327636これが役立ちます! – user123

答えて

1

ため おかげで、問題は、変数Numeriへの入力の最初の行を読んでいるということです。その後、hasNextNumeriと呼んでいますが、それはあなたが思うように動作していません。次のトークンが 指定された文字列から構築されたパターンに一致する場合はtrue

戻り値:Scanner.hasNexthereのように定義されます。

したがって、一致する必要があるパターンとしてNumeriの文字列を使用しています。間違いなくあなたが望むものではありません。

は、私はこのようなリストとやって何かをお勧めします:あなたが明示的にサイズ伝える必要はありませんので、

List<Integer> numberList = new ArrayList<>(); 
    while (sc.hasNextInt()) { 
     numberList.add(sc.nextInt()); 
    } 
    Collections.sort(numberList); 

リストがいいです。それはあなたの最初のループを回避します。今度は、整数ではないものが出現するまでループをSystem.inから読み込み、リストに追加します。

最後に、Collections.sortを使用してリストをソートします。それはどれくらい美しいですか?あなたのプログラム全体をわずか数行で再現することができます。間違いなく、利用可能なライブラリや機能を試してみてください。それはあなたに多くの時間と労力を節約することができます。あなたに質問がある場合はお知らせください。

関連する問題