コマンドで引数に1つの値(西暦)を与えてその年の九星を出力するようにしたいです。
上記の仕様を以下のコードで、実装しようとしたのですが、
引数の数が1以外の時に、エラーメッセージ「コマンドライン引数の数が不正です」を出すようにしたいのですが、以下のような実行結果になってしまいます。
正常に動作させるにはどのように修正すれば良いか教えていただけないでしょうか。
よろしくお願いします
実行結果
・2000 1500と入れた時に、2000の方を読み込んで九紫火星と出てしまう。
→「コマンドライン引数の数が不正です」と出したい
現状のコード
java
1import java.util.*; 2 3public class Hoshi { 4 public static void main(String[] args) { 5 int num = 0; 6 try { 7 num = Integer.parseInt(args[0]); 8 } catch (ArrayIndexOutOfBoundsException e) { 9 System.out.println("コマンドライン引数の数が不正です"); 10 return; 11 } catch (NumberFormatException e) { 12 System.out.println("コマンドライン引数には正の整数を指定してください"); 13 return; 14 } 15 if (num < 0) { 16 System.out.println("コマンドライン引数には正の整数を指定してください"); 17 return; 18 } 19 if (num < 1600) { 20 System.out.println("コマンドライン引数は 1600 年以降を指定してください"); 21 return; 22 } 23 24 int s = 0; 25 int a = 0; 26 s = num % 9; 27 28 if(s == 0){ 29 s = 1; 30 } 31 if (s == 1){ 32 s = 10; 33 } 34 35 a = 11 - s; 36 37 String msg = null; 38 39 switch (a) { 40 case 1: 41 msg = "一白水星"; 42 break; 43 case 2: 44 msg = "二黒土星"; 45 break; 46 case 3: 47 msg = "三碧木星"; 48 break; 49 case 4: 50 msg = "四緑木星"; 51 break; 52 case 5: 53 msg = "五黄土星"; 54 break; 55 case 6: 56 msg = "六白金星"; 57 break; 58 case 7: 59 msg = "七赤金星"; 60 break; 61 case 8: 62 msg = "八白土星"; 63 break; 64 case 9: 65 msg = "九紫火星"; 66 break; 67 default: 68 } 69 70 System.out.println(msg); 71 } 72}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/05 12:31
2020/10/05 12:32
2020/10/05 12:34
2020/10/05 12:39
2020/10/05 12:46
2020/10/05 19:08