Java 在单行中分配并执行if/else条件
例如,Java 在单行中分配并执行if/else条件,java,if-statement,ternary-operator,Java,If Statement,Ternary Operator,例如,if块检查条件是否为true或false,然后根据该条件执行操作 像 诸如此类的操作在同一行中执行所有操作,而不使用块,这可能吗 对不起,我英语不好 谢谢。如果您确实需要一行程序,您可以使用以下语法(称为三元运算符): 1> 0?“做动作”:“做其他动作” 例如: 字符串结果=x>y?“x>y”:“y>x” 但这是不推荐的,大多数人讨厌这种语法,因为如果在其中级联几个条件,甚至是最糟糕的级联三元运算符,它可能会变得非常不可读 但它也有它的用途。也许它能满足您的需求: checkIfTrue
if
块检查条件是否为true
或false
,然后根据该条件执行操作
像
诸如此类的操作在同一行中执行所有操作,而不使用块,这可能吗
对不起,我英语不好
谢谢。如果您确实需要一行程序,您可以使用以下语法(称为三元运算符): 1> 0?“做动作”:“做其他动作” 例如: 字符串结果=x>y?“x>y”:“y>x” 但这是不推荐的,大多数人讨厌这种语法,因为如果在其中级联几个条件,甚至是最糟糕的级联三元运算符,它可能会变得非常不可读 但它也有它的用途。也许它能满足您的需求:
checkIfTrue() ? actionIfTrue() : actionIfFalse();
您可以使用trenary操作符:
if(condition) ? executeForTrue() : executeForFalse();
我想这正是你想要的
max = (a > b) ? a : b;
逻辑上与
if (a > b) {
max = a;
} else { max = b; }
你可以用
此语句可以理解为,如果testCondition
为true,则将value1
的值分配给结果
;否则,将value2
的值指定给result
简单的例子是
minVal = a < b ? a : b;
这个例子会更清楚。它会根据一个人的性别正确打印问候语:
// if `person.isMale()` then its Mr. else its Ms.
return = "Thank you " + (person.isMale() ? "Mr. " : "Ms. ") + person.getLastName() + ".";
编辑:
This is returned value
问题:不能在三元运算符内调用方法
不,这是错误的
您可以在三元运算符内调用方法,只要它返回与三元运算符左侧类型相同的值
以这个例子来说,
让我们创建一个返回String
值的方法
String message(){
return "This is returned value";
}
现在看看这个代码
String answer = false ? "true" : message();
这将正常执行,因为返回消息()的类型和应答的变量类型相同,即字符串
输出:
This is returned value
不能使用三元运算符,因为不能从三元运算符
调用任何无效方法(即不返回任何内容的方法)
因为它不是三元运算符的预期用途
如果你真的想在一行中实现,你可以写:
if (condition) doThisMethod(); else doThatMethod();
要将条件语句放在一行上,可以使用三元运算符。但是,请注意,这只能在赋值中使用,即如果函数实际返回某个值,并且您希望将该值赋值给变量
int abs = x > 0 ? x : -1;
如果您想要执行不返回任何内容但有其他副作用的方法,那么三元运算符不是正确的方法。事实上,它甚至不编译
void doThis() {/* do this */}
void doThat() {/* do that */}
(condition) ? doThis() : doThat(); // does not work!
相反,您应该只使用普通的if-then-else
。它也更容易阅读
if (condition) {
doThis();
} else {
doThat();
}
为什么没有街区?这只是语法。有什么原因吗?人们甚至懒得评论就否决了新用户,这让我很难过。Thx,现在我明白了!如果是真的?真实行动;:虚假行为;不起作用吗?(对还是错)?(如果为true,则执行此命令):(如果为false,则执行此命令)
我的意思是,如果我可以在那里调用一个方法,例如(true)?System.out.println(“true”):System.out.println(“false”),但我看到@neeraj jain说三元操作不能执行方法,但所有的方法都是thx!在您给定的条件下,即(true)?System.out.println(“true”):System.out.println(“false”)
语句的左侧是什么?您可以这样做,System.out.print(false?:“false”)代码>好的,谢谢大家!左侧将是对ecample'if(myNumber==1)的检查?callTrueMethod;:callfalsethod;'例如,该方法可以是void。
void doThis() {/* do this */}
void doThat() {/* do that */}
(condition) ? doThis() : doThat(); // does not work!
if (condition) {
doThis();
} else {
doThat();
}