0

ドキュメントによるとNoSuchElementException、最後の有効なトークンを超えて読み取ろうとするとスローされます。それを念頭に置いて、誰かが次のようなものを書いた場合:

while(scanner.next() !=null){
    // read string into your variable
}

最後の有効なトークンを読み取った後にスローされるのではなく、null が返されると想定しているNoSuchElementException場合 (したがって、ブロックを保持しませんtry-catch)、そうすることで正しいでしょうか?

編集: .hasNext () を使用できることがわかりました。問題が解決しました。

4

1 に答える 1

2

hasNext() メソッドを使用して禁止することはまったく無意味です。

とはいえ、質問の「ルール」を破っている間は、次のイディオムを使用する必要があります。

while (scanner.hasNext()) {
    String s = scanner.next();
    // do stuff...
}

あなたの状況が興味がある場合は、読み取るトークンがなくなると NoSuchElementException がスローされます。これを「チェック」する唯一の方法は、try-catch ブロックです。例外の場合は null を返しません。例外を処理しない限り、プログラムは単純に終了します...

于 2013-09-07T04:48:02.600 に答える