【发布时间】:2022-01-23 05:25:55
【问题描述】:
如何重构此代码以不包含“int ans =” 我想保留三元运算符。由于 int ans 实际上不是答案,因此保持这种方式毫无意义。
使用三元运算符更改左/右值的正确方法是什么?
public class Main {
public static void main(String[] args) {
int[] nums = {-1, 0, 3, 5, 9, 12};
System.out.println(search(nums, 0));
}
public static int search(int[] nums, int target) {
int middle, left = 0, right = nums.length - 1;
while (left <= right) {
middle = left + (right - left) / 2;
if (nums[middle] == target) return middle;
int ans = (nums[middle] < target) ? (left = middle + 1) : (right = middle - 1);
}
return -1;
}
}
【问题讨论】:
-
另外,当我删除 'int ans = ' 时,代码无法编译。
-
如果
ans在上面的代码中没有任何用法,就不能直接删除吗?我不太确定这个问题的去向。您能否简要描述一下预期ans的目的? -
将三元运算符转换为
if语句? -
有道理!这就是我最初写它的方式,但很好奇这是否可以通过三元运算符实现?
-
您不能将三元运算符用作独立表达式。它与基本的
i + 1;相同,它也不会自行编译
标签: java binary-search conditional-operator