0

ここにJava初心者の合計。私の最初のJavaプログラムの1つに取り組んでいます。助けてください。私が達成しようとしていることは次のとおりです。空白で区切られた整数のユーザーキーボード入力を受け入れ、それらを配列にコピーして処理する必要があります。既知:ユーザーは1行のデータのみを入力します。数字の数はわかりませんが、Enterキーを押すと、それ以上は表示されなくなります。ユーザー入力には単語や特殊文字が含まれている可能性があるため、適切なエラーでそれらを処理し、ユーザーに再試行を促す必要があります。以下に書いたものを実行すると、Scannerが追加の入力を待ち続けるある種の無限ループに入ります。それが終わって、これ以上入力がなくなることをどのように伝えることができますか?

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

<!-- language-all: java -->

public static void EnterInts () {

    System.out.println("Enter series of integers separated by whitespace. Press Enter key when finished.");
    Scanner input = new Scanner(System.in);
    while (input.hasNext()){
        if (input.hasNextInt(){
            int i = input.nextInt();
            System.out.println(i);
        }
        else {
            System.out.println("Only integers can be entered. Try again.");
        }
    }
}
4

1 に答える 1

0

最初に入力の 1 行を読み取ってから、その 1 行をスキャンする Scanner を作成する必要があるようです。

BufferedReaderInputStreamReaderを使用して、最初に行を読み取ってみてください。

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String str = in.readLine();

次に、を作成しScanner、おそらくStringBufferInputStream読み取り文字列から作成されたをそのコンストラクターに渡します。

于 2012-04-25T13:22:29.830 に答える