我们来看一个列子:输出重读的数字的数组列子
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(count2)
//刚开始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])这里的等于没有显示出来 你们看到没有,我看不到
你的代码看不明白 但是推测是if(count2)写错位置了 当第一次判断2的时候循环走完时count的值是3
if(a[j]==a[k])这里的等于没有显示出来 你们看到没有,我看不到
@小龙天龙: 当if(a[j]==a[k])通过时应该跳出内循环 或将count++ 改为 count =2 否则第一次找2的时候会让count累加为3
@calpo: 当k的索引值和j的索引值相等就应该执行if里面的count++;然后就是应为等于3,所以就跳出循环,哦,人后就最后输出,谢谢,谢谢
你的输出结果应该是2, 5, 6, 2才对
输出的是重复数字,大哥,2前面就找到了,但是他是最后输出的,最先找到最先输出,为什么最后输出
@小龙天龙: 我拿你的代码补全跑了一遍,结果就是2562
你这里有三个2,第一个2找到后两个,count3,输出了一次,第二个2找到了最后一个2,count2,输出了一次,你的算法也没有判断有没有输出过2,所以最后输出一个2是正常的
当然以上推测只在我自己补全的代码跟你的完全一样才对
好了我现在知道被吞掉的符号是等号而不是大于号了,我的代码跟你的确实不一样
@拓拓: 怎么输出两个2 他是要输出重复的,既然编译器知道了有重复2,还是第一个最先找到,然而他却找到了三个,所以count不等于2,跳出循环,所以最后输出2
建议改进一下排版,支持 markdown 语法
– dudu 4年前用编辑器选择插入代码,而不是复制粘贴,不然你的代码会让我们看不明白
– Conan-jine 4年前