gpt4 book ai didi

Java三元运算符混淆

转载 作者:搜寻专家 更新时间:2023-11-01 04:07:38 25 4
gpt4 key购买 nike

这是我的代码

public class BinarySearch {
public static int binsearch(int key, int[] a)
{
int lo = 0;
int hi = a.length - 1;
while (lo < hi)
{
int mid = (lo + hi) >> 1;
key < a[mid] ? hi = mid : lo = (mid + 1);
}
return lo--;

}
}

编译时出错

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
Syntax error on tokens, Expression expected instead
Syntax error on token "]", delete this token
Syntax error, insert "]" to complete Expression

如果我将“<”更改为“>”

key > a[mid] ? hi = mid : lo = (mid + 1);

得到一个完全不同的错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
Syntax error on token ">", -> expected

我真的对 java 中的三元运算符用法感到困惑。毕竟,这段代码在 C++ 中运行良好

最佳答案

编译器很难解析您的表达式,因为它像语句表达式一样使用。

因为三元运算符是一个表达式,所以它不应该*用来代替语句。既然你想用条件控制赋值,这是一个语句,你应该使用常规的 if:

if (key < a[mid]) {
hi = mid;
} else {
lo = (mid + 1);
)

* 事实上,Java 不允许将三元表达式用作语句。您可以通过将表达式包装在赋值或初始化中来解决此问题(请参阅 demo ),但这会导致代码难以阅读和理解,因此应避免。

关于Java三元运算符混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30944415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com