【发布时间】:2012-09-14 22:59:39
【问题描述】:
我正在学习 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) 假设 credits 是一个 int 变量,其值为 0 或正数。根据学分的值写一个表达式,其值为“freshman”或“sophomore”或“junior”或“senior”。特别是:如果 credits 的值小于 30,则表达式的值是“freshman”; 30-59 为“大二”,60-89 为“初级”,90 岁或以上为“高级”。
再一次,我一直在玩弄,我能想到的最好的东西是这样的(而且我很可能缺少一些必要的括号):
credits < 30 ? "freshman": credits >= 30 && <=59 ?
"sophomore": credits >= 60 && <= 89 ? "junior": "senior"
我已经用谷歌搜索并检查了这里的数据库,但我不认为有任何与这个问题完全一样的东西;如果我错了,请原谅我。该程序(CodeLab)不会采用 Switch-Case 或 if-else-if 解决方案,总是建议我应该使用条件? : 操作员,但是我看过的所有地方我都没有弄清楚如何操纵操作员来处理这么多的情况。我们在这本书中并不多,所以如果你们能帮助我找到一个解决方案,如果它是一个与我到目前为止所学到的一点点相结合的解决方案,那就太好了。
【问题讨论】:
-
考虑如果
credits不 = 30,所以这个条件是没有意义的。
标签: java conditional operator-keyword