前提・実現したいこと
javaで四則計算用のプログラムを作っている途中なので、例)「4+2=」と入力したとき「5」と返ってくるプログラムを作っています。また、足し算だけではなく引き算や掛け算なども「2*5=」などのように入力し、「10」と返ってくるようなものです。
そこで、数字を入力してから演算子の文字列を入力することを繰り返すプログラムを作ろうとしたらScannerの宣言ができなくなってしまい(できたんですけどcloseできなくなってしまった)、この直し方を検索しても出てこないので質問させていただきました。
発生している問題・エラーメッセージ
calcu01.java:16: エラー: この文に制御が移ることはありません stage1.close(); ^ エラー1個
該当のソースコード
java
1import java.util.Scanner; 2public class calcu01 3{ 4 static String answer =""; 5 public static void main(String[] args) 6 { 7 Scanner stage1 = new Scanner(System.in); 8 Scanner stage2 = new Scanner(System.in); 9 while(true){ 10 int num1 = stage1.nextInt(); 11 String let1 = stage2.next(); 12 System.out.println(num1); 13 System.out.println(let1); 14 15 } 16 stage1.close(); 17 stage2.close(); 18 19 System.out.println(answer); 20 21 } 22 23 public static void put(String str) 24 { 25 System.out.println(str); 26 } 27}
補足情報(FW/ツールのバージョンなど)
java jdk-14.0.2
Scannerが何者で、とか仕様はどの程度把握した上で使われているのでしょうか
> calcu01.java:16: エラー: この文に制御が移ることはありません
エラーメッセージ通りです。 while(true) {...} で、コード上、while文を抜けることがあり得ない為です。あと、質問内容に直接的には関係ないですが、
> 「例)「4+2=」と入力したとき「5」」と返ってくる
4+2 は6です。例とは言え、正しく記載した方が良いと思います。そうでないと、「足し算のときに特別な処理を追加するのか」などと疑問に思ってしまいます。
どのような文言で検索してみたのか追記して下さい。回答に役立つことが多いです。
また、タイトルに『Scannerを2回宣言できない』とありますが、今回のエラーが本当にこれに起因するかどうか調査してみましょう。調査と言っても、stage2が関連している文を幾つか消してコンパイルしてみれば良いだけです。
dodox86さんありがとうございます。
試しにwhileの条件をfalseにしてみたら直りました。
助言ありがとうございます。
できれば回答として同じことを書いてほしいです。
ベストアンサーにします。
>@cretterさん
回答として投稿しました。よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー