前提
Eclipseで問題なし、paizaで実行時エラーとなります。
文字列を数字に分割する処理を含むコードで、nextIntメソッドを使っています。
実現したいこと
- Javaの実行時エラー解決法を教えてください!
発生している問題・エラーメッセージ
Exception in thread "main" java.util.NoSuchElementException at java.base/java.util.Scanner.throwFor(Scanner.java:941) at java.base/java.util.Scanner.next(Scanner.java:1598) at java.base/java.util.Scanner.nextInt(Scanner.java:2263) at java.base/java.util.Scanner.nextInt(Scanner.java:2217) at Main.main(Main.java:18)
該当のソースコード
<処理の概要>
以下N,C,r[i],c[i]は整数とします。
入力値"N C"を一つの文字列で受け取ります。#間は半角スペース
#ループ(最大N回)
入力値”r[i] c[i]”を受け取ります。
Cはc[i]ずつ減っていき、0以下になったらループを抜けます。
#ループ終わり
r[i]に1〜10が全て現れていたら、”Yes”
そうでなければ現れた数字の数を表示します。
Java
1import java.util.Scanner; 2 3public class Main { 4 public static void main(String[] args) { 5 6 Scanner sc1 = new Scanner(System.in); 7 int N = sc1.nextInt(); 8 int C = sc1.nextInt(); 9 10 int[] r = new int[N]; 11 int[] c = new int[N]; 12 int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 13 14 Scanner sc2 = new Scanner(System.in); 15 16 for (int i = 0; i < N; i++) { 17 18 r[i] = sc2.nextInt(); 19 c[i] = sc2.nextInt(); 20 21 if (C - c[i] <= 0) { 22 break; 23 } 24 C -= c[i]; 25 26 for (int j = 0; j < array.length; j++) { 27 if (r[i] == array[j]) { 28 array[j] = 0; 29 break; 30 } 31 } 32 } 33 34 int cnt = 0; 35 for (int i = 0; i < array.length; i++) { 36 if (array[i] == 0) { 37 cnt++; 38 } 39 } 40 41 if (cnt == array.length) { 42 System.out.println("Yes"); 43 } else { 44 System.out.println(cnt); 45 } 46 } 47}
試したこと
Eclipseに貼り付けて、同じテストケースを入力したところ、エラーは起きず、正しい動作をしました。。。
Eclipse では、警告が出ていません。try文によってScannerインスタンス生成を行なっています。
テストケース
12 9000
11 100
1 120
2 200
3 200
4 500
5 800
6 10
7 123
8 900
9 3000
10 2
12 7000
結果
paiza: 実行時エラー(NoSuchElementException)
Eclipse: Yes
補足情報(FW/ツールのバージョンなど)
Eclipse: java SE-17 2022-09 (4.25.0)
paiza.io: openjdk version "18.0.2.1" 2022-08-18
回答1件
あなたの回答
tips
プレビュー