首先,我们需要搞清楚十二星座分别对应的日期划分范围(参看下图)。
java实现代码:
public static void main(String[] args) {
System.out.println("请输入您的出生日期(如 0123 表示 1 月 23 日):");
Scanner scanner = new Scanner(System.in);
// 获取用户输入日期
int monthday = scanner.nextInt();
int month = monthday / 100; // 月份
int day = monthday % 100; // 日期号
String xingzuo = "";
switch (month) {
case 1:
xingzuo = day < 21 ? "摩羯座" : "水瓶座";
break;
case 2:
xingzuo = day < 20 ? "水瓶座" : "双鱼座";
break;
case 3:
xingzuo = day < 21 ? "双鱼座" : "白羊座";
break;
case 4:
xingzuo = day < 21 ? "白羊座" : "金牛座";
break;
case 5:
xingzuo = day < 22 ? "金牛座" : "双子座";
break;
case 6:
xingzuo = day < 22 ? "双子座" : "巨蟹座";
break;
case 7:
xingzuo = day < 23 ? "巨蟹座" : "狮子座";
break;
case 8:
xingzuo = day < 24 ? "狮子座" : "处女座";
break;
case 9:
xingzuo = day < 24 ? "处女座" : "天秤座";
break;
case 10:
xingzuo = day < 24 ? "天秤座" : "天蝎座";
break;
case 11:
xingzuo = day < 23 ? "天蝎座" : "射手座";
break;
case 12:
xingzuo = day < 22 ? "射手座" : "摩羯座";
break;
}
System.out.println("您的星座是:" + xingzuo);
scanner.close(); // 关闭scanner对象
}
这里采用switch语句实现条件判断,主要考虑两个方面,一是判断的具体数值不多(十二星座),二是条件类型为int,符合case类型要求。
不过其中有个小warning,但不影响程序正常执行。但对我一个强迫症来说,总想消灭它才罢休。就是如果不加scanner.close(); 这行代码会出现
"Resource leak: 'scanner' is never closed"警告,大概意思是你new的scanner对象没有关闭,资源会泄露。因此,在main函数的外部,再调用它的closed方法即可。