【发布时间】:2014-10-19 21:50:09
【问题描述】:
我发现问题在于 int MATHDATE 没有像预期的那样改变。每次我输入生日时,符号都会出现摩羯座,因为 MATHDATE 不会从 0 更改。有人可以帮我解决这个问题吗?谢谢。
System.out.println("Please enter your birthday in mm/dd format: ");
Scanner birthdayin = new Scanner(System.in);
String bmonth = scan.nextLine();
int bday = Integer.parseInt((bmonth.substring(0,bmonth.indexOf('/'))));
String horoscope = null;
int MATHDATE = 0;
if (bmonth.equals("01") || bmonth.equals("1")){
MATHDATE = 0 + bday;}
if (bmonth.equals("02") || bmonth.equals("2")){
MATHDATE = 31 + bday;}
if (bmonth.equals("03") || bmonth.equals("3")){
MATHDATE = 59 + bday;}
if (bmonth.equals("04") || bmonth.equals("4")){
MATHDATE = 90 + bday;}
if (bmonth.equals("05") || bmonth.equals("5")){
MATHDATE = 120 + bday;}
if (bmonth.equals("06") || bmonth.equals("6")){
MATHDATE = 151 + bday;}
if (bmonth.equals("07") || bmonth.equals("7")){
MATHDATE = (181 + bday);}
if (bmonth.equals("08") || bmonth.equals("8")){
MATHDATE = 212 + bday;}
if (bmonth.equals("09") || bmonth.equals("9")){
MATHDATE = 243 + bday;}
if (bmonth.equals("10")){
MATHDATE = 273 + bday;}
if (bmonth.equals("11")){
MATHDATE = 304 + bday;}
if (bmonth.equals("12")){
MATHDATE = 334 + bday;}
if (MATHDATE >= 20 && MATHDATE <= 49)
{horoscope = ("AQUARIUS");}
else if (MATHDATE >= 50 && MATHDATE <= 79)
{horoscope = ("PISCES");}
else if (MATHDATE >=80 && MATHDATE <=110)
{horoscope = ("ARIES");}
else if (MATHDATE >= 111 && MATHDATE <= 141)
{horoscope = ("TAURUS");}
else if (MATHDATE >= 142 && MATHDATE <= 172)
{horoscope = ("GEMINI");}
else if (MATHDATE >= 173 && MATHDATE <= 203)
{horoscope = ("CANCER");}
else if (MATHDATE >= 204 && MATHDATE <= 234)
{horoscope = ("LEO");}
else if (MATHDATE >= 235 && MATHDATE <= 265)
{horoscope = ("VIRGO");}
else if (MATHDATE >= 266 && MATHDATE <= 295)
{horoscope = ("LIBRA");}
else if (MATHDATE >= 296 && MATHDATE <= 325)
{horoscope = ("SCORPIO");}
else if (MATHDATE >= 326 && MATHDATE <= 355)
{horoscope = ("SAGITTARIUS");}
else if (MATHDATE >= 356 || MATHDATE<= 19)
{horoscope = ("CAPRICORN");}
System.out.println("Your sign is: " + horoscope);
【问题讨论】:
-
您是否进行过任何基本调试,例如打印出
bmonth的值并确认它包含您认为包含的内容? -
假设
bmonth包含/字符,您从bmonth派生bday。同时,您对bmonth进行了 12 次相等检查,假设bmonth包含 1 到 12 之间的格式化数字……但没有/字符。因此,您的代码显然对bmonth可能包含的内容做出了相互矛盾的假设。 -
看起来你需要设置
bmonth,就像你有bday一样(只取部分输入)。只是一个快速指针 - 即使第一个if条件为真,所有其他条件仍将被评估。这种语言是否支持选择案例/开关?