我知道有一种方法可以用简短的形式编写Java if
语句。
if (city.getName() != null) {
name = city.getName();
} else {
name="N/A";
}
有谁知道如何将上述5行的短格式写成一行?
答案 0 :(得分:336)
使用三元运算符:
name = ((city.getName() == null) ? "N/A" : city.getName());
我认为你有条件倒退 - 如果它是null,你想要的值是“N / A”。
如果城市为空怎么办?在这种情况下,你的代码*会打到床上。我再添一张支票:
name = ((city == null) || (city.getName() == null) ? "N/A" : city.getName());
答案 1 :(得分:24)
这样做的方法是使用三元运算符:
name = city.getName() == null ? city.getName() : "N/A"
但是,我相信你上面的代码中有一个拼写错误,你的意思是说:
if (city.getName() != null) ...
答案 2 :(得分:24)
为避免两次调用.getName()
,我会使用
name = city.getName();
if (name == null) name = "N/A";
答案 3 :(得分:16)
? :Java中的运算符
在Java中你可以写:
if (a > b) {
max = a;
}
else {
max = b;
}
基于单个条件将单个变量设置为两个状态之一是if-else的常见用法,即为其设置了一个快捷方式,条件运算符,?:。使用条件运算符,您可以在一行中重写上面的示例,如下所示:
max = (a > b) ? a : b;
(a> b)? a:b;是一个表达式,它返回两个值a或b中的一个。测试条件(a> b)。如果为真,则返回第一个值a。如果为false,则返回第二个值b。无论返回哪个值取决于条件测试,a> 1。湾条件可以是返回布尔值的任何表达式。
答案 4 :(得分:15)
在java 8中:
name = Optional.ofNullable(city.getName()).orElse("N/A")
答案 5 :(得分:14)
我一直在伪造如何使用?:
ternary operator。这个补充答案是一个快速提醒。它是if-then-else
的简写。
myVariable = (testCondition) ? someValue : anotherValue;
,其中
()
拥有if
?
表示then
:
表示else
与
相同if (testCondition) {
myVariable = someValue;
} else {
myVariable = anotherValue;
}
答案 6 :(得分:8)
您可以用简短的形式撰写if, else if, else
个陈述。例如:
Boolean isCapital = city.isCapital(); //Object Boolean (not boolean)
String isCapitalName = isCapital == null ? "" : isCapital ? "Capital" : "City";
这是以下简称:
Boolean isCapital = city.isCapital();
String isCapitalName;
if(isCapital == null) {
isCapitalName = "";
} else if(isCapital) {
isCapitalName = "Capital";
} else {
isCapitalName = "City";
}
答案 7 :(得分:6)
name = (city.getName() != null) ? city.getName() : "N/A";
答案 8 :(得分:3)
name = ( (city.getName() == null)? "N/A" : city.getName() );
首先检查条件(city.getName() == null)
。如果是,则将"N/A"
分配给姓名或仅name="N/A"
,或者将city.getName()
中的值分配给名称,即name=city.getName()
。
要注意的事情:
(city.getName() == null)?
的原因。这个问号就在这个条件之后。易于查看/阅读/猜测!:
)左侧的值和冒号右侧的值
(a)当条件为真时,分配冒号左侧的值,否则将冒号的右侧赋值给变量。 答案 9 :(得分:3)
这是一个行代码
name = (city.getName() != null) ? city.getName() : "N/A";
这是示例工作方式,在js文件中的代码下运行并了解结果。此("Data" != null)
是条件,就像我们在常规if()
中所做的一样,并且"Data"
是在条件变为真时的语句。 " : "
充当else,而"N/A"
是else条件的声明。希望这可以帮助您理解逻辑。
name = ("Data" != null) ? "Data" : "N/A";
console.log(name);
答案 10 :(得分:2)
使用org.apache.commons.lang3.StringUtils:
name = StringUtils.defaultString(city.getName(), "N/A");
答案 11 :(得分:2)
简单&明确: 强>
String manType = hasMoney() ? "rich" : "poor";
长版本:
String manType;
if (hasMoney()) {
manType = "rich";
} else {
manType = "poor";
}
或我如何使用它来清楚其他代码阅读器:
String manType = "poor";
if (hasMoney())
manType = "rich";
答案 12 :(得分:1)
您可以删除括号和换行符。
if (city.getName() != null) name = city.getName(); else name = "N/A";
您可以在java中使用?:运算符。
<强>语法:强>
Variable = Condition ? BlockTrue : BlockElse;
所以在你的代码中你可以这样做:
name = city.getName() == null ? "N/A" : city.getName();
为布尔
指定条件结果
boolean hasName = city.getName() != null;
EXTRA: 好奇的
在某些基于JAVA
Groovy
的语言中,您可以使用以下语法:
name = city.getName() ?: "N/A";
您可以在Groovy
中执行此操作,因为如果您要求此条件:
if (city.getName()) {
//returns true if city.getName() != null
} else {
//returns false if city.getName() == null
}
因此运算符?:
分配从条件返回的值。在这种情况下,city.getName()
的值如果不是null
。
答案 13 :(得分:0)
您可以在java中使用三元运算符。
<强>语法:强>
Condition ? Block 1 : Block 2
所以在你的代码中你可以这样做,
name = ((city.getName() == null) ? "N/A" : city.getName());
有关详细信息,请参阅this资源。
答案 14 :(得分:-3)
name = city.getName()!=null?city.getName():"N/A"