概述
一、问题现象
int[] 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三目运算符?(表达式1):(表达式2)一、问题现象二、问题原因分析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复