我正在学习
Java编程的第一个学期,我们刚刚介绍了条件运算符(?:)条件.我有两个问题,似乎是希望我在另一个中“嵌套”条件运算符,这些我可以轻松(但又繁琐)使用if-else-if语句.
1)“假设月份是一个int变量,其值为1或2或3或5 …或11或12.写一个值为”jan“或”feb“或”mar“或”apr“的表达式或“may”或“jun”或“jul”或“aug”或“sep”或“oct”或“nov”或“dec”基于月份的值.(因此,如果月份的值为4,那么表达式的值将是“apr”.).“
我的想法看起来像这样:
(month==1)?"jan":(month==2)?"feb": (month==3)?"mar": (month==4)?"apr": (month==5)?"may":(month==6)?"jun": (month==7)?"jul":(month==8)?"aug": (month==9)?"sep": (month==10)?"oct": (month==11)?"nov": (month==12)?"dec":
(我知道这不是一个完整的表达,但我不确定如何用操作符来表达处理这么多条件.)
2)假设信用是一个int值变量,其值为0或正数.根据学分的价值写出一个价值为“新生”或“二年级”或“初级”或“高级”的表达.特别是:如果学分的值小于30,则表达式的值为“新生”; 30-59将是“二年级”,60-89将是“大三”,90或更多将是“高级”.
再一次,我一直在玩弄,我能想到的最好的东西就像(并且我的probs缺少一些必要的括号):
credits < 30 ? "freshman": credits >= 30 && <=59 ? "sophomore": credits >= 60 && <= 89 ? "junior": "senior"
我在谷歌上搜索了数据库,但我并不认为这个问题确实存在问题.如果我错了,请原谅我.程序(CodeLab)不会采用Switch-Case或if-else-if解决方案,总是建议我应该使用条件? :操作符,但我看到的每个地方我都没有想出如何操作运算符来处理这么多条件.我们在这本书中已经不远了,所以如果你们能帮助我找到解决方案,那么如果它能够与我迄今为止所学到的一点点相媲美,那就太棒了.
解决方法
对于第一个问题,您确实可以使用三元运算符,但更简单的解决方案是使用带有月份描述的String [],然后下标此数组:
String[] months = { "jan","feb","mar",... }; int month = 1; // jan String monthDescription = months[month - 1]; // arrays are 0-indexed
现在,对于你的第二个问题,三元运算符似乎更合适,因为你的条件较少,虽然if会更容易阅读,imho:
String year = "senior"; if (credits < 30) { year = "freshman"; } else if (credits <= 59) { year = "sophomore"; } else if (credits <= 89) { year = "junior"; }
将其与三元运算符进行对比:
String year = credits < 30 ? "freshman" : credits <= 59 ? "sophomore" : credits <= 89 ? "junior" : "senior";