如何查找从b中选择的所有数字对, 例如,我有
int [] b = {1,2,3,5,4,3,2,1,1};
我需要打印在这个整数数组中找到的对以及它们所处的位置 请记住,我试图像这样比较它们
for (int i = 0; i < ia.length; i++) {
number = 0;
for (int j = 0; j < ia.length; j++) {
if (ia[i] == ia[j]) {
number++;
}
}
if (number%2==0) {
System.out.println("found pairs at ia["+i+"] = "+ia[i] );
}
}
但问题是它一直在比较其他数字,所以如果我们有一个数字可以在第一次比较它时找到3次并且会说它不是一对但是第二次它将不会与之前的值进行比较,因此它将找到2而不是3,它会说它的对
感谢您抽出时间回答我的问题
答案 0 :(得分:0)
你有一些错误,在这里你去:
int[]ia={1,2,1,2,2};
for (int i = 0; i < ia.length; i++) {
int number = 0;
for (int j = 0; j < ia.length; j++) {
if (ia[i] == ia[j]) {
number++;
}
}
if (number%2==0) {
System.out.println("found pairs at ia["+i+"] = "+ia[i] );
}
}
每个人都在某个地方徘徊....
答案 1 :(得分:0)
Map<Integer, Integer> counter = new HashMap<Integer,Integer>();
for(int i:b){
if(counter.get(i)!=null)
counter.put(i,1);
else
counter.put(i,counter.get(i)+1);
}
//Print all with values two or completely divisible by 2 if required
for(int i:counter.keySet()){
if(counter.get(i)%2==0)
System.out.println("Pair number: "+i);
}
很抱歉,如果有任何编译错误。我刚刚在浏览器中编写了代码。
答案 2 :(得分:0)
这里不需要过于复杂。对于像你这样的简单案例,不使用List
或Map
,我们就可以这样做:
int [] numbers = {1,2,3,5,4,3,2,1,1};
int [] used = new int[numbers.length];
for(int digit : numbers) used[digit] += 1;
//At this point all entries in used with a value of 2 match
System.out.println(Arrays.toString(used));
将输出[0, 3, 2, 2, 1, 1, 0, 0, 0]
,意味着数字0被找到0次,数字1被发现3次,数字2被找到2次,等等。如果您的数字很大,就不要这样做,或者名单很大,我假设你在这里学习基础知识。