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

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

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

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

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

解決済

3回答

17622閲覧

Java NoSuchElementExceptionのエラーの原因が分かりません。

izuHO02

総合スコア1

Java

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

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

1クリップ

投稿2020/09/19 16:01

前提・実現したいこと

私は大学の講義でC言語をやった程度で、プログラミングの経験がとても浅いです。
現在、とある書籍を元にJavaを独学で勉強しているのですが、次のソースコードをpaiza.IOを使って実行させたところ、Runtime errorを起こしました。
問題文を載せても良いのか分からなかったので、ソースコードのみ載せます。

なぜこのようなエラーが起こるのか、またどうすればエラーを解決できるのかを教えていただけないでしょうか。
お願いします。

発生している問題・エラーメッセージ

Exception in thread "main" java.util.NoSuchElementException: No line found at java.base/java.util.Scanner.nextLine(Scanner.java:1651) at Main.main(Main.java:6)

該当のソースコード

Java

1import java.util.*; 2 3public class Main { 4 public static void main(String[] args) { 5 int isHungry = new java.util.Scanner(System.in).nextInt(); 6 String food = new java.util.Scanner(System.in).nextLine(); 7 System.out.println("こんにちは"); 8 if(isHungry == 0) 9 { 10 System.out.println("おなかがいっぱいです。"); 11 } 12 else 13 { 14 System.out.println("はらぺこです"); 15 System.out.println(food + "をいただきます"); 16 System.out.println("ごちそうさまでした"); 17 } 18 } 19}

試したこと

6行目の
String food = new java.util.Scanner(System.in).nextLine();
の部分に問題があるのではないかという見当はつくのですが、なぜ間違っているのかも分からず、このエラーについてネットでも調べましたが、全く分かりませんでした。

補足情報(FW/ツールのバージョンなど)

使用環境:paiza.IO(オンライン実行環境)

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

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

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

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

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

guest

回答3

0

ベストアンサー

java

1import java.util.*; 2//メインクラス 3public class Main { 4 public static void main(String[] args) { 5 //例外処理 6 try{ 7 // Scannerクラスのインスタンスを作成 8 Scanner scanner = new Scanner(System.in); 9 //ScannerクラスのnextLineメソッドの利用 10 String food = scanner.nextLine(); 11 //ScannerクラスのnextIntメソッドの利用 12 int isHungry = scanner.nextInt(); 13 //isHungryが0の場合 14 if(isHungry == 0){ 15 System.out.println("おなかがいっぱいです。"); 16 } 17 //0以外の場合 18 else{ 19 System.out.println("はらぺこです"); 20 System.out.println(food + "をいただきます"); 21 System.out.println("ごちそうさまでした"); 22 } 23 //入力がおかしい場合の例外が発生した場合 24 }catch(NoSuchElementException e){ 25 System.out.println("正しい入力をいれてちょんまげ"); 26 } 27 } 28}

上記内容で行けるかと思います。
paiza.ioの仕様で、「入力」に焼肉 + 改行 + 数字(※試しに「1」)と入力するといけますよー
てか、paiza.ioってすごい便利っすね!!
※私自身java.util.Scannerこのような書き方はちょいと苦手っすね?
インスタンス化し実体を持たして利用可能にしたクラスの中にある関数nextLine()を利用する方が
いいかなあ~?
取り敢えず、一応これでいけると思いますがなぜこれでいけるのかはちょっと調べてくれるといいかもっす(笑)。。。できたらこっそり教えてください(笑)

投稿2020/09/19 16:59

編集2020/09/20 16:20
mshmash

総合スコア23

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

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

0

イメージ説明

投稿2020/09/20 15:41

編集2020/09/20 15:51
mshmash

総合スコア23

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

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

0

イメージ説明
scanner.close();とimport java.util.Scanner;はいらないっすね(笑)
こういうのはドはまりしそうっすね。。。
トライ&エラーっす!!

投稿2020/09/19 17:05

編集2020/09/19 17:14
mshmash

総合スコア23

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

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

izuHO02

2020/09/20 06:42

回答ありがとうございます。 教えていただいたとおりにコードを書いたのですが、動きませんでした… 次のようなエラーです。 Exception in thread "main" java.util.InputMismatchException at java.base/java.util.Scanner.throwFor(Scanner.java:939) at java.base/java.util.Scanner.next(Scanner.java:1594) at java.base/java.util.Scanner.nextInt(Scanner.java:2258) at java.base/java.util.Scanner.nextInt(Scanner.java:2212) at Main.main(Main.java:10)
mshmash

2020/09/20 16:09 編集

余りteratailのことをしらないので???? 上記に再度画像をアップしました。 paiza.ioで入力を押下して文字列を記入してenter押下して数字を入力して実行を押したらいいと思います。 動画で見たい場合はこちらへ!!Twitterに上げました!! https://twitter.com/MhspgG <@MhspgG> Scannerクラスで先にfoodを読み込んでいるので必ず文字列から入力して下さい。 エラー内容としては、Scannerで入力する場合に空で実行しているのが原因かと思います。 InputMismatchException = 入力した値がおかしいっすよー
izuHO02

2020/09/20 17:40

もっとエラー文をしっかり読むべきでした。すみません…。 try構文でエラーキャッチまでしてくださった上に、Twitterに動画も上げてくださり、ありがとうございます ! 事前にjava.util.をインポートしておくことで、後のメソッドの一部をを省略して記述することができるということを知れてとても勉強になりました。 私の書いたコードでエラーが起こっていたのは、 ●Scannerクラスのインスタンスを呼び出せていなかった。 もしくは、 ●Scannerクラスのインスタンスが、入力メソッドで入力する際には閉じられていた が原因なのでしょうか。
mshmash

2020/09/20 18:00 編集

解決できて、良かったです!! new java.util.Scanner(System.in).nextInt() 私の予想ですが上記の書き方が古いのかなぁーっと思ったりします。 上の書き方も、インスタンス化して関数を読んでる風な書き方してるから問題ないのかなぁーと思ったりするので。。。(ドキュメント読む程でも無さそうかな?) まぁーpaiza.ioでjavaを書くよりeclipseで書いた方がいいかもです!! 環境構築で解らない所があったらきらーくにTwitterでDMしてもらったら全然手伝いますよー基本暇なので!!(笑)
izuHO02

2020/09/24 00:20

勉強に使っている本は、 new java.util.Scanner(System.in).nextInt(); の書き方をしていたのですが、ネットで調べてみると、そのような書き方はあまり見かけませんでしたね。 eclipseは入れているのですが、使い方がイマイチ分からず、クラスも一つだけだったのでpaizaとかdokojavaとか使っていました笑 もう複数クラスを扱う内容に入るので、eclipseの使い方もしっかり勉強します! なんとか地力でやってみようと思いますが、もしどうしても分からないことがあったら、質問させてください! 本当にありがとうございました!
mshmash

2020/09/26 13:25 編集

eclipseやばいっすよね(笑) わからない事があれば気楽にどうぞー!! 業務で少しやった事があるので ※teratailでの質問で「パスがない」や「環境設定」や「パラメータがない」の質問はちょいとやめた方がいいかもです。環境設定の質問は、場合によるかもですが。。。 なぜ辞めた方がいいかは察してください(笑)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問