前提・実現したいこと
現在class
をどんどん追加して入力した番号に対応したclass
を実行させるプログラムを作っているのですが、その入力にScanner
を使用していてまず0
を入力したところclass
を選択するところはできたのですがclass calcu
のScanner
が実行しようとした瞬間エラーが起きました。直し方を教えてください。
発生している問題・エラーメッセージ
Exception in thread "main" java.util.NoSuchElementException at java.base/java.util.Scanner.throwFor(Scanner.java:937) at java.base/java.util.Scanner.next(Scanner.java:1478) at calcu.test03(test0301.java:25) at test0301.main(test0301.java:13)
該当のソースコード
java
1import java.util.Scanner; 2 3public class test0301 4{ 5 public static void main(String[] args) 6 { 7 System.out.print(">>"); 8 var sentaku = new Scanner(System.in); 9 int cl_num = sentaku.nextInt(); 10 sentaku.close(); 11 var cl0 = new calcu(); 12 switch(cl_num){ 13 case 0:cl0.test03();break; 14 } 15 16 17 } 18} 19class calcu 20{ 21 void test03(){ 22 Scanner sc = new Scanner(System.in); 23 put("説明を表示しますか"); 24 put("Y or N"); 25 String setumei = sc.next(); 26 if(setumei.equals("Y")||setumei.equals("y")){ 27 put("これから出てくる指示の通りに入力してください"); 28 put(""); 29 } 30 try{ 31 while(true){ 32 put("数値を入力してください"); 33 System.out.print(">>"); 34 int num1 = sc.nextInt(); 35 put("演算子を入力してください"); 36 System.out.print(">>"); 37 String str1 = sc.next(); 38 put("数値を入力してください"); 39 System.out.print(">>"); 40 int num2 = sc.nextInt(); 41 int answer = 0; 42 int answer2 = 0; 43 switch(str1){ 44 case "+": 45 answer = num1 + num2; 46 put("A."+answer); 47 break; 48 case "-": 49 answer = num1 - num2; 50 put("A."+answer); 51 break; 52 case "*": 53 answer = num1 * num2; 54 put("A."+answer); 55 break; 56 case "/": 57 answer = num1 / num2; 58 answer2 = num1 % num2; 59 if(answer2 != 0){ 60 put("A."+answer + "…"+answer2); 61 }else{ 62 put("A."+answer); 63 } 64 break; 65 case ";": 66 answer = num1 + num2; 67 put("A."+answer); 68 break; 69 case ":": 70 answer = num1 * num2; 71 put("A."+answer); 72 break; 73 } 74 put(""); 75 put("もう一度計算しますか"); 76 put("Y or N"); 77 String nextln = sc.next(); 78 if(nextln.equals("Y")||nextln.equals("y")){ 79 put(""); 80 }else{ 81 put("終了します"); 82 break; 83 } 84 } 85 } 86 catch(Exception e){ 87 put("終了します"); 88 } 89 sc.close(); 90 } 91 public static void put(String str) 92 { 93 System.out.println(str); 94 } 95}
補足情報(FW/ツールのバージョンなど)
java jdk-14.0.2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/02 14:04 編集
2020/10/06 13:05