微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我正在学习 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";

原文地址:https://www.jb51.cc/java/128355.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐