嵌套循环+三元运算符的Java代码为何输出结果为2?
为什么这段Java代码的输出是2?
让我一步步帮你拆解这段代码,你就能明白背后的逻辑啦~
首先先看格式化后的代码:
public static void main(String[] args) { int [] num = {1,4,3,6,8,5,3,1,9,7}; int result = 0; for(int i=0;i<num.length ;i++) { for(int j =i+1;j<num.length;j++) { result += (num[i]==num[j]?1:0); } } System.out.println(result); }
代码核心逻辑
这段代码的作用是统计数组中所有「位置在前的元素和位置在后的元素相等」的配对数量——也就是只算i < j的情况,不会重复统计同一个配对(比如不会既算索引0和7,又算7和0)。
具体来说:
- 外层循环
i逐个遍历数组里的每个元素 - 内层循环
j从i+1开始,只遍历i之后的元素,避免重复计数 - 三元表达式
num[i]==num[j]?1:0:如果两个元素相等,就给result加1;不相等就加0(等于没变化)
对应数组的具体计算
咱们看给定的数组{1,4,3,6,8,5,3,1,9,7},找一下符合条件的配对:
- 索引0的
1和 索引7的1:这是第一对,result加1 - 索引2的
3和 索引6的3:这是第二对,result再加1
其他元素都是唯一的,没有更多相等的配对了。所以最终result的值就是1+1=2,这就是输出结果为2的原因。
举个额外的例子帮你加深理解:如果数组是{2,2,2},那符合条件的配对是(0,1)、(0,2)、(1,2),运行代码后输出会是3哦。
内容的提问来源于stack exchange,提问作者Bilguun enkhee
相关产品推荐
相关产品推荐

