【发布时间】:2016-01-16 23:06:11
【问题描述】:
我想打印将元素放在一个只出现两次的数组中。因此,例如,如果数字 2 出现 3 或 4 次,则不应打印。到目前为止我编写的代码如下。
我的代码中的问题在于循环。例如,对于数字 2,由于 j=i+1 是初始化条件,因此内部循环不会读取第 jth 位置之前的元素——因为索引 6 处有一个 2,所以它不会计算 2s在它之前,使所需条件为真并显示 2。有没有办法解决这个问题?
public class Problem2 {
public static void exactlytwice(int[] x) {
int count, j;
for (int i = 0; i < x.length; i++) {
count = 0;
for (j = i + 1; j < x.length; j++) {
if (x[i] == x[j])
count++;
}
if (count == 1) System.out.print(x[i] + " ");
}
}
public static void main(String[] args) {
int[] x = new int[15];
x[0] = 2;
x[1] = 2;
x[2] = 2;
x[3] = 13;
x[4] = 44;
x[5] = 44;
x[6] = 2;
x[7] = 63;
x[8] = 63;
x[9] = 90;
x[10] = 1;
x[11] = 2;
x[12] = 150;
x[13] = 150;
x[14] = 180;
exactlytwice(x);
}
}
【问题讨论】:
-
您可以将数组中的值映射为出现次数的键,然后使用 value=2 打印映射中的值。
-
尽管这与您的问题没有太大直接关系,但您可以简单地将数组初始化为以下形式:
int[] x = {2, 2, ...};,而不是手动将整数值分配给特定索引(位置)