Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在单行中分配并执行if/else条件_Java_If Statement_Ternary Operator - Fatal编程技术网

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();
}