質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

468閲覧

Scannerの使い方

rin5rinrinrin

総合スコア1

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2023/05/27 06:28

編集2023/05/27 06:34

前提

現在Javaの勉強をしており、Paizaのスキルチェックで繰り返しアウトプットをしている段階です。
主にCランクの問題に挑戦していますが、度々同様のランタイムエラーが発生します。
標準入力での数値の与え方が例えば
4 30
30
10
40
の時に、2行目の30が読み込めないようでエラーが発生しています。
同じコードをeclipseで試したとき、数値を
4
30
30
10
40
のように全て改行した時は、問題なく動作しました。

数字の間に半角空白や改行があっても問題なく読み込める方法をご教示いただきたく存じます。
よろしくお願いいたします。

エラーメッセージ

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:9)

該当のソースコード

Java

1import java.util.*; 2public class Main { 3 public static void main(String[] args) { 4 Scanner sc = new Scanner(System.in); 5 int N=sc.nextInt(); 6 int M=sc.nextInt(); 7 int jam=0; 8 for(int i=0;i<N;i++){ 9 int A = sc.nextInt(); 10 if(A<=M){ 11 jam+=A; 12 }else{ 13 continue; 14 } 15 } 16 System.out.print(jam); 17 } 18}

試したこと

調べていく中で改行が影響するといったことが書いてあるサイトを見つけたので
9行目の上の行に
sc.nextLine();
を加えて改行を文字列として読み込めるか試みましたが、
同様のエラーが再び出ました。
また、初めに読み込むNとMは問題なく読み込まれていることを確認しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

1T2R3M4

2023/05/27 06:53

入力の数が足りないだけでは
rin5rinrinrin

2023/05/27 07:07

すみません、勉強不足でご指摘内容が分からないので、具体的にご説明いただけますでしょうか。
1T2R3M4

2023/05/27 07:32

問題の内容やリンクが無いから想像ですが Nが入力される要素数 Mが合計するかしないかの閾値 だとすると 4 30 30 10 40 だと 入力数4に対して3つしかデータが無いってなりませんか。
rin5rinrinrin

2023/05/27 07:49

問題はPaizaのスキルチェック問題のC:115です。 試しに繰り返しの条件をint i =1にしてみたら正常に動作しました! forで指定した入力数と実際の入力数が一致しないとエラーになってしまうということなんですね ありがとうございました。
jimbe

2023/05/27 07:53

>2行目の30が読み込めないようでエラーが発生 まずここが推測になっていますので、確認するのが良いと思います。 8行目の for の直後に System.out.println("i="+i); System.out.flush(); を入れて実行し、繰り返しの何回目で例外が発生しているのかを見てみては如何でしょうか。
guest

回答1

0

自己解決

繰り返しの条件をint i=1に書き換えたら解決しました。

投稿2023/05/27 07:50

rin5rinrinrin

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

episteme

2023/05/28 04:27

改行の有無は関係なかった、と?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問