つい先日からjavaを学び始めました。
例外処理について詰まってしまったので質問させて頂きたいです。
プログラムは標準入力で受け取った数字までのフィボナッチ数列を表示させる仕様になっています。
この標準入力の時、"exit"と"quit"が入力されるとプログラムが終了させることは出来たのですが
他の文字列が入力されしまうとエラーを吐いてしまいます。
エラー文
Exception in thread "main" java.lang.NumberFormatException: For input string: "e" at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.base/java.lang.Integer.parseInt(Integer.java:652) at java.base/java.lang.Integer.parseInt(Integer.java:770) at Main.main(Main.java:11)
どのような例外処理を取れば良いのか分かりませんのでヘルプを頂きたく投稿させてもらいました。
よろしくお願い致します。
全体のコード
Main.java
1import java.util.Scanner; 2class Main { 3 public static void main(String[] args) { 4 Scanner scan = new Scanner(System.in); 5 while(true) { 6 System.out.print("数字を入力してください(0< N <= 70) :"); 7 String input = scan.next(); 8 if (input.equals("quit") || input.equals("exit")) { 9 break; 10 } else { 11 int num = CheckNum(Integer.parseInt(input)); 12 System.out.println(num + "番目のフィボナッチ数列: " + Fibonacci.calculate(num)); 13 System.out.println(num + "番目までのフィボナッチ数列: "); 14 for(int i=1; i<=num; i++) { 15 System.out.println(Fibonacci.calculate(i)); 16 } 17 } 18 } 19 } 20 static int CheckNum(int target) { 21 while(true) { 22 try { 23 if (target>=1 && target<=70) return target; 24 } 25 catch(NumberFormatException e) {} 26 } 27 } 28}
Fibonacci.java
1class Fibonacci { 2 public static long calculate(int num) { 3 if(num == 1) return 0; 4 if(num == 2) return 1; 5 long fx = 0, 6 f1 = 0, 7 f2 = 1; 8 for(int i=3; i<= num; i++) { 9 fx = f1 + f2; 10 f1 = f2; 11 f2 = fx; 12 } 13 return fx; 14 } 15}
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/11 09:58
2019/08/11 10:21
2019/08/11 10:45
2019/08/11 14:14