在int [] b中查找对;?

时间:2016-05-28 12:51:02

标签: java arrays

如何查找从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,它会说它的对

感谢您抽出时间回答我的问题

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)

这里不需要过于复杂。对于像你这样的简单案例,不使用ListMap,我们就可以这样做:

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次,等等。如果您的数字很大,就不要这样做,或者名单很大,我假设你在这里学习基础知识。