質問: new java.util.Scanner(System.in).nextInt(); System.out.println(a); } } ``` というコードを打ってみたのですが Exception in thread "main" java.util.NoSuchElementException at java.util.Scanner.throwFor(Scanner.java:907) at java.util.Scanner.next(Scanner.java:1530) at java.util.Scanner.nextInt(Scanner.java:2160) at java.util.Scanner.nextInt(Scanner.java:2119) at Main.main(Main.java:3) という赤文字が現れます。 一行目で何かの要素に例外が生じたのは分かりましたが残りの意味が分かりません どういう意味なのでしょうか
回答: 大雑把に言うと、メソッドを呼ぶごとにスタックに情報が積まれていきます。 スタックトレースは、その積まれたスタックをさかのぼってエラーが出ている箇所を特定するための情報を提供します。 ご質問の例では、`Main.java`の3行目で使っている`Scanner.nextInt`メソッドの呼び出しがあって、そこからさらに`Scanner.nextInt`メソッド(オーバーロードメソッド)が呼ばれ、`Scanner.next`メソッドが呼ばれ、`Scanner.throwFor`が呼ばれ、`Scanner.throwFor`が例外をスローしているのでそこが終点になります。 スタックトレースについてはここでは書ききれないので、下記の記事などを参考に学んでみて下さい。 スタックトレース (stack trace)とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典 スタックトレースを利用してメソッドの情報を取得する:CodeZine(コードジン)