月に漢数字(一や二など)が入力さ入れた場合でも正しく動作し、一方で不適切な値が入力されたとしても、プログラムが異常終了しないように、例外処理を使って書き換える。ただし、入力される漢数字は1桁の月(一から九まで)に限るものとする.
というプログラムです。
ifの()の中をどのように書けばいいでしょうか?
public class StringToInt2 { public static void main(String[] args) { int n; try { n = Integer.parseInt(args[0]); } catch(NumberFormatException e) { char c = args[0].charAt(0); switch(c) { case '一': //System.out.println("一月は31日です"); n = 1; break; case '二': //System.out.println("二月は28日です"); n = 2; break; case '三': //System.out.println("三月は31日です"); n = 3; break; case '四': //System.out.println("四月は30日です"); n = 4; break; case '五': //System.out.println("五月は31日です"); n = 5; break; case '六': //System.out.println("六月は30日です"); n = 6; break; case '七': //System.out.println("七月は31日です"); n = 7; break; case '八': //System.out.println("八月は31日です"); n = 8; break; case '九': //System.out.println("九月は30日です"); n = 9; break; default : //System.out.println("不正な値です。"); n = -1; } } if (n > 0 && n < 13) { int days; switch(n) { case 1: days = 31; break; case 2: days = 28; break; case 3: days = 31; break; case 4: days = 30; break; case 5: days = 31; break; case 6: days = 30; break; case 7: days = 31; break; case 8: days = 31; break; case 9: days = 30; break; case 10: days = 31; break; case 11: days = 30; break; default: days = 31; } System.out.println(args[0].charAt(0) + "月は" + days + "日あります。"); } else { System.out.println("不正な値です。"); } } }
エラー
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0 at StringToInt2.main(StringToInt2.java:5)
漢数字を入力した場合。
$javac StringToInt2.java $java StringToInt2 三月は31日あります。
数字を入力した場合
$javac StringToInt2.java $java StringToInt2 3月は31日あります。
Eclipse_2020-06を使ってプログラムを書いています。
回答3件
あなたの回答
tips
プレビュー