将 if/else 转换为三元运算符 Java
Convert if/else to ternary operator Java
我的函数 setA() 如下所示:
public double setA(){
double a;
aField.getText() == null || aField.getText().trim().isEmpty() ? a = 1 : a = Double.parseDouble(aField.getText());
//a = aField.getText() == null || aField.getText().trim().isEmpty() ? a = 1 : a = Double.parseDouble(aField.getText());
//return aField.getText() == null || aField.getText().trim().isEmpty() ? a = 1 : a = Double.parseDouble(aField.getText());
/*if(aField.getText() == null || aField.getText().trim().isEmpty())
a = 1;
else
a = Double.parseDouble(aField.getText());*/
return a;
}
我想去掉 if/else 并用三元运算符重写它。
None 这 3 个三元选项有效,并且在构建中,它们显示相同的错误:
java: unexpected type
required: variable
found: value
与此同时,注释 if/else 块工作得很好。
将 TextField aField 传递到函数中并完成此操作。没有帮助 + 在构建之前我明白了
Variable 'a' might not have been initialized
怎么了?
试试这个:
a = (aField.getText() == null || aField.getText().trim().isEmpty())
? 1.0 : Double.parseDouble(aField.getText());
看起来不错,除了你设置 a
变量的方式。
double a = <condition> ? <true> : <false>:
您还可以使用 Apache
实用程序来简化代码。
import org.apache.commons.lang3.StringUtils;
public double setA() {
return StringUtils.isBlank(aField.getText()) ? 1 : Double.parseDouble(aField.getText());
}
public double setA() {
String str = aField.getText();
return str == null || str.trim().isEmpty() ? 1 : Double.parseDouble(str.trim());
}
你的三元尝试的问题是它们没有在语法方面得到纠正:
//a = aField.getText() == null || aField.getText().trim().isEmpty() ? a = 1 : a = Double.parseDouble(aField.getText());
对于 Java 语言规范 (§15.25):
15.25。条件运算符? :
The conditional operator ? : uses the boolean value of one expression
to decide which of two other expressions should be evaluated.
ConditionalExpression:
ConditionalOrExpression
ConditionalOrExpression ? Expression : ConditionalExpression
所以在你的例子中是一个 =(条件表达式)? 'a' 的值 if conditional expression
为真 : 'a' 的值,如果 conditional expression
为假;
a = aField.getText() == null || aField.getText().trim().isEmpty()
? 1
: Double.parseDouble(aField.getText());
我的函数 setA() 如下所示:
public double setA(){
double a;
aField.getText() == null || aField.getText().trim().isEmpty() ? a = 1 : a = Double.parseDouble(aField.getText());
//a = aField.getText() == null || aField.getText().trim().isEmpty() ? a = 1 : a = Double.parseDouble(aField.getText());
//return aField.getText() == null || aField.getText().trim().isEmpty() ? a = 1 : a = Double.parseDouble(aField.getText());
/*if(aField.getText() == null || aField.getText().trim().isEmpty())
a = 1;
else
a = Double.parseDouble(aField.getText());*/
return a;
}
我想去掉 if/else 并用三元运算符重写它。 None 这 3 个三元选项有效,并且在构建中,它们显示相同的错误:
java: unexpected type required: variable found: value
与此同时,注释 if/else 块工作得很好。 将 TextField aField 传递到函数中并完成此操作。没有帮助 + 在构建之前我明白了
Variable 'a' might not have been initialized
怎么了?
试试这个:
a = (aField.getText() == null || aField.getText().trim().isEmpty())
? 1.0 : Double.parseDouble(aField.getText());
看起来不错,除了你设置 a
变量的方式。
double a = <condition> ? <true> : <false>:
您还可以使用 Apache
实用程序来简化代码。
import org.apache.commons.lang3.StringUtils;
public double setA() {
return StringUtils.isBlank(aField.getText()) ? 1 : Double.parseDouble(aField.getText());
}
public double setA() {
String str = aField.getText();
return str == null || str.trim().isEmpty() ? 1 : Double.parseDouble(str.trim());
}
你的三元尝试的问题是它们没有在语法方面得到纠正:
//a = aField.getText() == null || aField.getText().trim().isEmpty() ? a = 1 : a = Double.parseDouble(aField.getText());
对于 Java 语言规范 (§15.25):
15.25。条件运算符? :
The conditional operator ? : uses the boolean value of one expression to decide which of two other expressions should be evaluated.
ConditionalExpression: ConditionalOrExpression ConditionalOrExpression ? Expression : ConditionalExpression
所以在你的例子中是一个 =(条件表达式)? 'a' 的值 if conditional expression
为真 : 'a' 的值,如果 conditional expression
为假;
a = aField.getText() == null || aField.getText().trim().isEmpty()
? 1
: Double.parseDouble(aField.getText());