加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 02:57:48 所属栏目:Java 来源:网络整理
导读:我正在学习 Java编程的第一个学期,我们刚刚介绍了条件运算符(?:)条件.我有两个问题,似乎是希望我在另一个中“嵌套”条件运算符,这些我可以轻松(但又繁琐)使用if-else-if语句. 1)“假设月份是一个int变量,其值为1或2或3或5 …或11或12.写一个值为”jan“或”
我正在学习 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";

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读