前提・実現したいこと
現在のソースだと、IF文が大量にあるので、見栄えが悪く、ソースの修正があった場合、修正行が多くなることがあると思うので、星座判別の規則性を使ってソースを改変したいのですが、規則がわからず苦戦中
星座の判別について、javaのコマンドライン引数を使って星座を判別します。
コマンドライン引数は、
例)1201
1003
Case文も使用せずにソースの改変を行いたい
発生している問題・エラーメッセージ
エラーは現在ありません。
該当のソースコード
Java
1public class Constellation { 2 public static void main(String[] args) { 3 // 入力値MMDD(想定) 4 String myDay = args[0]; 5 try { 6 int month = Integer.parseInt(myDay.substring(0, 2)); 7 int day = Integer.parseInt(myDay.substring(2, 4)); 8 // 星座名取得. 9 String seizaName = getSeiza(month, day); 10 if (seizaName == null) { 11 System.out.println("日付が正しくない"); 12 } 13 System.out.println(seizaName); 14 15 } catch (Exception e) { 16 System.out.println("日付が正しくない"); 17 } 18 } 19 20 /** 21 * 星座名取得. 22 * 23 * @param month 月 24 * @param day 日 25 * @return seizaName 星座名 26 */ 27 public static String getSeiza(int month, int day) { 28 String seizaName = null; 29 if (month < 13) { 30 if (month == 3 && day >= 21 || month == 4 && day <= 19) { 31 return seizaName = "牡羊座"; 32 } else if (month == 4 && day >= 20 || month == 5 && day <= 20) { 33 return seizaName = "牡牛座"; 34 } else if (month == 5 && day >= 21 || month == 6 && day <= 21) { 35 return seizaName = "双子座"; 36 } else if (month == 6 && day >= 22 || month == 7 && day <= 22) { 37 return seizaName = "蟹座"; 38 } else if (month == 7 && day >= 23 || month == 8 && day <= 22) { 39 return seizaName = "しし座"; 40 } else if (month == 8 && day >= 23 || month == 9 && day <= 22) { 41 return seizaName = "乙女座"; 42 } else if (month == 9 && day >= 23 || month == 10 && day <= 23) { 43 return seizaName = "てんびん座"; 44 } else if (month == 10 && day >= 24 || month == 11 && day <= 22) { 45 return seizaName = "蠍座"; 46 } else if (month == 11 && day >= 23 || month == 12 && day <= 21) { 47 return seizaName = "射手座"; 48 } else if (month == 12 && day >= 22 || month == 1 && day <= 19) { 49 return seizaName = "山羊座"; 50 } else if (month == 1 && day >= 20 || month == 2 && day <= 18) { 51 return seizaName = "水瓶座"; 52 } else { 53 return seizaName = "魚座"; 54 } 55 } else { 56 return seizaName; 57 } 58 } 59}
補足情報(FW/ツールのバージョンなど)
回答7件
あなたの回答
tips
プレビュー