三元条件运算符中的多个条件?

埃文·韦尔斯(Evan Welser):

我正在学习Java编程的第一学期,我们已经介绍了条件运算符(?:)条件。我有两个问题,似乎是想让我在彼此之间“嵌套”条件运算符,而我可以很轻松地(但乏味地)使用if-else-if语句。

1)“假设月份是一个int变量,其值为1或2或3或5 ...或11或12。编写一个值为“ jan”或“ feb”或“ mar”或“ apr”的表达式,或者基于月份的值是“ may”或“ jun”或“ jul”或“ aug”或“ sep”或“ oct”或“ nov”或“ dec”。(因此,如果month的值为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或正数。根据学分的价值写一个表达式,其值为“新人”或“大二”或“初中”或“高级”。特别是:如果积分的价值小于30,则表达式的价值为“新鲜人”;30-59将是“大二”,60-89将是“初中”,90或更多将是“高级”。

再一次,我一直在玩耍,我能想到的最好的东西是这样的(而且我很可能缺少一些必要的括号):

credits < 30 ? "freshman": credits >= 30 && <=59 ?
 "sophomore": credits >= 60 && <= 89 ? "junior": "senior"

我已经在Google周围搜索并检查了这里的数据库,但是我不认为有什么与这个问题完全相同。如果我错了,请原谅我。程序(CodeLab)不会采用Switch-Case或if-else-if解决方案,总是提示我应该使用条件?:运算符,但是我一直到哪里都没有弄清楚如何操纵该运算符来处理这么多条件。我们在本书中还不算太远,所以如果你们能帮助我找到解决方案,那是一件很棒的事情,如果我能从我到目前为止所学的知识中汲取灵感的话。

若昂席尔瓦(JoãoSilva):

对于第一个问题,您确实可以使用三元运算符,但是一个更简单的解决方案是String[]在月份描述中使用a ,然后对该数组下标:

String[] months = { "jan", "feb", "mar", ... };
int month = 1; // jan
String monthDescription = months[month - 1]; // arrays are 0-indexed

现在,对于第二个问题,三元运算符似乎更合适,因为您的条件较少,尽管ifimho更容易阅读:

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";

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章