0

だから私はこのコードを持っています:

  • 配列に4つの数字を挿入します。
  • それらを挿入した後、どちらの数字が最も大きく、どちらの数字が最も小さいかを確認したいと思います。
  • このチェックを行う前に、ユーザーに新しい番号を追加するかどうかを尋ねたいと思います。
  • この番号は、他の番号の1つに置き換わります。

問題は、私のコードがこの行の直後で停止することです。

System.out.println("Do you wish to add another number [Y/N]?");

YまたはN(「はい/いいえ」)を入力することはできません。ただし、その前にスキャンを削除すると、これは機能します。私が使用するインポートステートメントは次のimport.util.*; とおりです。アイデアや役立つアドバイスをいただければ幸いです。

コードは次のとおりです。

Scanner sc = new Scanner (System.in);

int[] array;
array = new int[4];

System.out.println("Enter nr1:");
array[0] = sc.nextInt();

System.out.println("Enter nr2:");
array[1] = sc.nextInt();

System.out.println("Enter nr3:");
array[2] = sc.nextInt();

System.out.println("Enter nr4:");
array[3] = sc.nextInt();  

System.out.println("Do you wish to add another number [Y/N]?");
String answer = sc.nextLine();


if ("N".equals(answer)){

    Arrays.sort(array);

    System.out.println(Arrays.toString(array));
    System.out.println("Samllest value: " + array[0]);
    System.out.println("Second smalles value: " + array[1]);
    System.out.println("Second biggest value: " + array[2]);
    System.out.println("Biggest value: " + array[3]);
}
4

2 に答える 2

2

問題はScanner#nextInt()、同様のメソッドがEnd-Of-Lineトークンを処理しないことです。1つの解決策は、このトークンを処理して破棄するために呼び出しnextLine()た後に単に呼び出すことです。nextInt()

すなわち、

System.out.println("Enter nr1:");
array[0] = sc.nextInt();
sc.nextLine();

System.out.println("Enter nr2:");
array[1] = sc.nextInt();
sc.nextLine();

System.out.println("Enter nr3:");
array[2] = sc.nextInt();
sc.nextLine();

System.out.println("Enter nr4:");
array[3] = sc.nextInt();  
sc.nextLine();

System.out.println("Do you wish to add another number [Y/N]?");
String answer = sc.nextLine();
于 2013-01-29T21:36:36.460 に答える
1

Scanner.next()notを使用したいScanner.nextLine()

于 2013-01-29T21:35:15.803 に答える