我是java的初学者,我正在做一些练习题来温习我的java技能。
编写一个名为season的方法,该方法接受两个整数作为表示月和日的参数,并返回一个指示该月和日的季节的字符串。假设月份被指定为1到12之间的整数(1表示1月,2表示2月,依此类推),并且月份中的日期是1到31之间的数字。
如果日期在12/16和3/15之间,则应返回“冬季”。如果日期在3/16和6/15之间,则应返回"Spring“。如果日期在6/16和9/15之间,则应返回"Summer“。如果日期在9/16和12/15之间,则应返回"Fall“。
public static String season(int month,int day){
if(month>=9 && month<=12 && day==15||day==16){
return "Fall";
}
else if (month>=4 && month<=6 && day==16||day==15){
return "Spring";
}
else if (month>=6 && month<=9 && day==16||day==15){
return "Summer";
}
else {
return"Winter";
}
}但是我没有得到output.But它似乎是正确的me.Anyone可以告诉我我哪里错了吗?
发布于 2013-03-08 20:56:14
|| has lower precendence than &&,并且您的条件看起来不正确--您可能想要编写如下内容:
if((month == 9 && day >= 16) //September, on or after the 16th
|| month == 10 //or October
|| month == 11 //or November
|| (month == 12 && day <=15)) { //or December, but before or on the 15th
return "Fall";
}(对其他条件的注释相同)
你可以通过使用一些hack来缩短它,但可读性可能不是很好(有争议):
int mdd = month * 100 + day; //date in MDD format, for example 507 for May 7th
if (mdd >= 916 && mdd <= 1215) {
return "Fall";
}发布于 2013-03-08 21:01:39
你应该试着写这样的代码:
if((month>9 && month<12) || (month==9 && day>=16) || (month==12 && day<=15)){
return "Fall";
} else if
...
}优先级也很重要,但你必须考虑你真正想要实现的目标,并根据这一点构建你的表达式。
发布于 2013-11-06 07:05:59
这运行得很好。我纠正了你的一些小错误
public static String season(int month,int day){
if((month>=9 && month<=12) && (day==15||day==16))
return "Fall";
else{
if ((month>=4 && month<=6) && (day==16||day==15))
return "Spring";
else{
if ((month>=6 && month<=9) && (day==16||day==15))
return "Summer";
else
return"Winter";
}
}}
https://stackoverflow.com/questions/15294465
复制相似问题