質問: s.nextInt(); s.close(); } catch (Exception e) { System.out.println("エラー2" + e); } System.out.println(x + ":" + y); } } --------------------------------------ここまで------------------------------------------ 上のコードを実行すると最初のtry文は正常に実行されますが、二度目のtry文に入った直後の入力する前の段階でNoSuchElementExceptionになってしまいます。 もし可能であればScannerクラスを二回以上newするような使い方をしたいのですが不可能なのでしょうか。 この現象の原因と対処法を教えていただけると幸いです。
回答: catchした例外をそのように出力しない方が良い。 e.printStackTrace();としないと、本当の問題がなんなのか表示されない可能性が高い。 これは今回に限らず常に意識しておく方がいい。 今回の問題は、何も考えずにScanner#close()を使っていること。 e.printStackTrace()で例外の詳細を知り、Scannerの中(ソース)を覗いて見れば、なんでそうなるのか分かる...かもしれない。 それと、わざわざ「初心者」を書く必要はないよ。