首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >三元运算符(Java)

三元运算符(Java)
EN

Stack Overflow用户
提问于 2016-04-11 06:27:39
回答 3查看 469关注 0票数 0

我最近被介绍了三元运算符。我设法度过了CS学校的一年半,没有一个教授提到过三元运算符。这是我的教授经常使用它们的第一个季度。它们看起来很适合于缩短代码。因此,这个问题将帮助我理解三元运算符的界限以及何时/如何使用它们。有没有办法用一个长语句和一个三元运算符来缩短下面的代码块?

代码语言:javascript
复制
if(age < 18){
    minors+=1;
} else if(age < 65){
    adults+=1;
}else{
    seniors+=1;
}
EN

回答 3

Stack Overflow用户

发布于 2016-04-11 06:32:38

您正在更新三个唯一的变量,one使用三元组的方式如下所示

代码语言:javascript
复制
minors += (age < 18) ? 1 : 0;
adults += (age >= 18 && age < 65) ? 1 : 0;
seniors += (age >= 65) ? 1 : 0;
票数 3
EN

Stack Overflow用户

发布于 2016-04-11 06:29:09

您可以将其编写为一条语句:

代码语言:javascript
复制
int dummy = (age < 18) ? (minors += 1)
          : (age < 65) ? (adults += 1)
          :              (seniors += 1);

此处未使用dummy的值。这只是一种将表达式转换为语句的方法。

请注意,在实践中,我不会考虑这样编写逻辑。代码中有多个副作用,这使得它很难理解。

我认为你现在编写的代码的意图是非常清晰的。根据我的经验,三元表达式有使代码更难读的趋势。

票数 2
EN

Stack Overflow用户

发布于 2016-04-11 06:48:26

三元运算符并不适合您的代码,因为您要更改3个不同的变量。我会让你的代码保持原样。

另一方面,假设你有这个

代码语言:javascript
复制
if (age < 18) {
    number += 1;
} else if (age < 65) {
    number = 8;
} else if (age < 90) {
    number += 2;
} else {
    number = 13;
}

可以将其重写为类似于switch的形式

代码语言:javascript
复制
number = age < 18 ? number + 1 :
         age < 65 ? 8          :
         age < 90 ? number + 2 :
                    13;

我认为这是对if版本的改进。然而,以这种方式嵌套三元运算符并不常见,因此如果您使用此版本,可能会使查看您的代码的人感到困惑。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36536265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档