一、问题现象
复制代码
1
2
3
4
5
6
7int[] num1 = {2,0},num2 = {1}; i = 0,j=0,end=1; while(j>=0){ // nums1[end--] = (i>=0 && nums2[j] > nums1[i])?nums2[j--]:nums1[i--]; // 有问题的代码 ① nums1[end--] = (i>=0 && nums1[i] > nums2[j])?nums1[i--]:nums2[j--]; // ② }
如果使用注释的代码行,会出现数组越界的异常报错;
二、问题原因分析
while循环中两行代码对比:
- 相同点
(1)两行代码的实现的功能其实是一样的;
(2)第一次循环后的i一定会变成-1; - 不同点
(1)第二次循环三目运算符的取值导致数组越界;
其实,仔细分析才深切体会到,三目运算的判断条件判断主体不同(> 运算符左边为主,右边为次),会直接影响后面 : 的选择,正是因为这点,i 变成-1后,括号中 (i>=0 && nums1[i] > nums2[j]) 中直接变成false,也就需要保证不能取mums1[i–];
最后
以上就是温柔哑铃最近收集整理的关于关于java三目运算符?(表达式1):(表达式2)一、问题现象二、问题原因分析的全部内容,更多相关关于java三目运算符内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复