首页 新闻 搜索 专区 学院

关于数组的输出问题

0
[已解决问题] 解决于 2020-05-10 15:41

我们来看一个列子:输出重读的数字的数组列子
public static void main(String[] args){
int[] my_array = {1, 2, 5, 5, 6, 6, 7, 2, 9,2};
findDupicateInArray(my_array);
}
public static void findDupicateInArray(int[] a) {
int count=1;
for(int j=0;j<a.length;j++) {
for(int k =j+1;k<a.length;k++) {
if(a[j]a[k]) {
count++;
}
}
if(count
2)
//刚开始count等于1 当数组找到相同的 count就等于2 就重复
System.out.println( "重复元素 : " + a[j] );
count = 1;
}

}

以上输出结果:
重复元素 : 5
重复元素 : 6
重复元素 : 2
去掉元素最后一个数的输出结果:
重复元素 : 2
重复元素 : 5
重复元素 : 6
提问:当 j 的值是1 的时候就已经找到了2 为什么最后输出
如果把 数组最后面的一个2 去掉的话 他就会先输出2
有谁能给我解释一下这个他的编译器的输出规则

问题补充:

if(a[j]==a[k])这里的等于没有显示出来 你们看到没有,我看不到

沛之的主页 沛之 | 菜鸟二级 | 园豆:208
提问于:2020-05-10 10:10

建议改进一下排版,支持 markdown 语法

dudu 2年前

用编辑器选择插入代码,而不是复制粘贴,不然你的代码会让我们看不明白

Conan-jine 2年前
< >
分享
最佳答案
0

你的代码看不明白 但是推测是if(count2)写错位置了 当第一次判断2的时候循环走完时count的值是3

奖励园豆:5
calpo | 菜鸟二级 |园豆:218 | 2020-05-10 15:30

if(a[j]==a[k])这里的等于没有显示出来 你们看到没有,我看不到

沛之 | 园豆:208 (菜鸟二级) | 2020-05-10 15:33

@小龙天龙: 当if(a[j]==a[k])通过时应该跳出内循环 或将count++ 改为 count =2 否则第一次找2的时候会让count累加为3

calpo | 园豆:218 (菜鸟二级) | 2020-05-10 15:37

@calpo: 当k的索引值和j的索引值相等就应该执行if里面的count++;然后就是应为等于3,所以就跳出循环,哦,人后就最后输出,谢谢,谢谢

沛之 | 园豆:208 (菜鸟二级) | 2020-05-10 15:40
其他回答(1)
0

你的输出结果应该是2, 5, 6, 2才对

拓拓 | 园豆:1048 (小虾三级) | 2020-05-10 10:53

输出的是重复数字,大哥,2前面就找到了,但是他是最后输出的,最先找到最先输出,为什么最后输出

支持(0) 反对(0) 沛之 | 园豆:208 (菜鸟二级) | 2020-05-10 15:34

@小龙天龙: 我拿你的代码补全跑了一遍,结果就是2562
你这里有三个2,第一个2找到后两个,count3,输出了一次,第二个2找到了最后一个2,count2,输出了一次,你的算法也没有判断有没有输出过2,所以最后输出一个2是正常的
当然以上推测只在我自己补全的代码跟你的完全一样才对

支持(0) 反对(0) 拓拓 | 园豆:1048 (小虾三级) | 2020-05-10 16:55

好了我现在知道被吞掉的符号是等号而不是大于号了,我的代码跟你的确实不一样

支持(0) 反对(0) 拓拓 | 园豆:1048 (小虾三级) | 2020-05-10 16:57

@拓拓: 怎么输出两个2 他是要输出重复的,既然编译器知道了有重复2,还是第一个最先找到,然而他却找到了三个,所以count不等于2,跳出循环,所以最后输出2

支持(0) 反对(0) 沛之 | 园豆:208 (菜鸟二级) | 2020-05-10 16:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册