前提・実現したいこと
下記のような標準入力を行ごとに取得し、各組を評価して計算するプログラミングを練習しています。
各組が同値なら掛け算をして、違うなら割り算をします。
しかし、java.util.NoSuchElementExceptionが出てしまっており原因がわかりません。
原因をご教示いただけないでしょうか。
2 3
3 2
4 4
4 5
4 1
発生している問題・エラーメッセージ
java.util.NoSuchElementException
該当のソースコード
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); sc.nextLine(); int sum = 0; for (int i = 0; 0 < num; i++) { int a = sc.nextInt(); int b = sc.nextInt(); if(a == b) { sum += a * b; } else { sum += a + b; } } System.out.println(sum); → 何も表示されません。。 } }
for 文のすぐ下に
System.out.println("input>");
を追加して実行してみると、想定した挙動と違うことに気づくと思います。
そこからミスにも気づくかと思います。
それからエラー出現までの実行プロセスを正確に伝えるべきです。
コンパイルエラーでも、実行してすぐエラーが表示されるわけでもないんじゃないでしょうか?
実行して
2 3
3 2
4 4
4 5
4 1
を?入力。
sumの結果が表示される想定だけど返ってこない。
そのため、実行を中断(Ctrl-c)したときに 「java.util.NoSuchElementException」が出るのではないですか?
> java.util.NoSuchElementException
この後に続く出力(スタックトレースといいます)がとても大切ですので、
質問を編集して追記してください。
> System.out.println(sum); → 何も表示されません。。
これがおかしいからだと思います。
for (int i = 0; 0 < num; i++)
できれば、コード内には実際のコード以外は入れないでいただけると。
あなたの回答
tips
プレビュー