Java三元运算符混淆
发布时间:2020-12-15 05:13:05 所属栏目:Java 来源:网络整理
导读:这是我的代码 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--; }} 我在编译时遇到错误
这是我的代码
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中的三元运算符用法. 解决方法
编译器很难解析表达式,因为它像statement-expression一样使用.
由于三元运算符是表达式,因此不应该使用它来代替语句.由于您希望使用条件来控制赋值(这是一个语句),因此您应该使用常规if: if (key < a[mid]) { hi = mid; } else { lo = (mid + 1); ) *实际上,Java不允许将三元表达式用作语句.您可以通过将表达式包装在赋值或初始化中来解决此问题(请参阅demo),但这会导致代码难以阅读和理解,因此应该避免使用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |