今天做一道题的时候,发现else语句的异常结果错误。题目给定一个值与数组,让你从数组中找出两个值的和等于给定值
public class AAA {
public static void main(String[] args) {
int[] nums = {150,24,79,50,88,345,3};
int target = 200;
Arrays.sort(nums);
int length = nums.length;
int i = 0;
int j = length-1;
int [] res = new int[2];
while(i<j)
{
int sum = nums[i]+nums[j];
if(sum<target)
i++;
if(sum>target)
j--;
else
{
res[0]=nums[i];
res[1]=nums[j];
break;
}
}
for (int m:res
) {
System.out.println(m);
}
}
}
本题的答案应该是 50 150. 但结果出错,实际运行结果 24 150.
然后把if else 语句中的else改为if(sum==target) 结果正确 。
但sum的值如果不小于又不大于target的值,那不就只剩等于了么?所以为什么else不对啊?