我知道有一种用简短形式编写Java if
语句的方法。
if (city.getName() != null) {
name = city.getName();
} else {
name="N/A";
}
有人知道如何将上述5行代码写成一行短格式吗?
我知道有一种用简短形式编写Java if
语句的方法。
if (city.getName() != null) {
name = city.getName();
} else {
name="N/A";
}
有人知道如何将上述5行代码写成一行短格式吗?
使用三元运算符:
name = ((city.getName() == null) ? "N/A" : city.getName());
我认为你的条件反了 - 如果它是null,你想让值为"N/A"。name = ((city == null) || (city.getName() == null) ? "N/A" : city.getName());
`name = city.getName() == null ? "N/A" : city.getName();`
- Andres F.name = city.getName()==null ? "N/A" : city.getName()
,如果城市名称为null,则将名称设置为“N/A”。 - Steve Kuocity == null
,那么String cityName = city.getName();
会抛出NullPointerException
异常吗?因此,我认为你的中间解决方案绝对是最好的(顺便说一下,我赞成使用“不必要”的括号!人们需要记住,99%的编程是与其他人(以及你未来的自己)交流,而不是与编译器交流 - 否则我们就会使用c!) - Alex.getName()
,我会使用:name = city.getName();
if (name == null) name = "N/A";
city.setName(null)
。你的答案能够妥善处理这种情况。 - emoryJava中的三元运算符
在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。如果条件为假,则返回第二个值b。返回的值取决于条件测试a > b,而条件可以是任何返回布尔值的表达式。
name = city.getName() == null ? city.getName() : "N/A"
不过,我认为你在上面的代码中有一个打字错误,你的意思是:
if (city.getName() != null) ...
我总是忘记如何使用 ?:
三元运算符。这个附加答案是一个快速提醒。它是 if-then-else
的简写形式。
myVariable = (testCondition) ? someValue : anotherValue;
含义
()
代表if
?
代表then
:
代表else
与以下表达式相同
if (testCondition) {
myVariable = someValue;
} else {
myVariable = anotherValue;
}
1. 您可以删除括号和换行符。
if (city.getName() != null) name = city.getName(); else name = "N/A";
2. 您可以在Java中使用?:操作符。
语法:
Variable = Condition ? BlockTrue : BlockElse;
name = city.getName() == null ? "N/A" : city.getName();
3. 为布尔值分配条件结果
boolean hasName = city.getName() != null;
额外信息:好奇的人看
在一些基于JAVA
的语言中,比如Groovy
,你可以使用这种语法:
name = city.getName() ?: "N/A";
?:
将分配从我们请求的变量返回的值。在这种情况下,如果city.getName()
不是null
,则分配其值。在Java 8中:
name = Optional.ofNullable(city.getName()).orElse("N/A")
name = (city.getName() != null) ? city.getName() : "N/A";
您可以以简短的形式编写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";
}
name = (city.getName() != null) ? city.getName() : "N/A";
以下是演示工作原理的示例,请在JS文件中运行下面的代码并了解结果。这个条件 ("Data" != null)
就像我们在普通的 if()
语句中一样,"Data"
是当这个条件为真时的语句。这个 " : "
表示否则,"N/A"
是否则情况下的语句。希望这有助于您理解这个逻辑。
name = ("Data" != null) ? "Data" : "N/A";
console.log(name);
variable x = (boolean expression) ? value if true : value if false;
例如,以下代码将比较两个数字并返回其中最大的数字:int a = 5; int b = 10; int max = (a > b) ? a : b; System.out.println(max); // 输出 10
在这个例子中,布尔表达式a > b
为 false,因此执行b
的值,即max
被赋值为10
。使用三元运算符可以使代码更加简洁,但过度使用也会降低代码的可读性。 - CoolBeansif
逻辑搞反了。 - NPEif (city.getName()!= null) name = city.getName(); else name="N/A";
- Anton Dozortsev