无法弄清楚我的代码有什么问题 - 不同的数字

时间:2017-08-23 01:50:43

标签: java distinct-values

我在这里看到了这个问题,但是所有的解决方案都被称为“地图”,现在我不知道它是什么,我正在学习这本书(java编程第10版的介绍)。此外,这是我的解决方案,因为我不想仅仅查看另一个,而是自己去理解我的缺陷。

用户输入10个数字,然后程序打印不同的数字。 这是我的代码:

  int[] numbers = new int[10];
    int counter = 0;
    for (int i = 0; i < 10; i++) {
        int check = input.nextInt();
        if (!isContains(numbers, check)) ;
        numbers[counter] = check;
        counter++;
    }

    for (int i = 0; i < 10; i++) {
        System.out.println(numbers[i]);
    }

}

public static boolean isContains(int[] array, int key) {

    for (int i = 0; i < array.length; i++) {
        if (array[i] == key)
            return true;
    }
    return false;
  }

}

我的逻辑是这样的: 创建一个空数组,通过10个数字,从用户输入一个数字,召唤methond isContains-它检查数字是否已经在数组内部,如果不是,则将其分配给数字[计数器]位置。

我已经连续工作了2个小时,无法弄清楚出了什么问题...... 我尝试在表单中执行此操作  do -while - 没有结果......

我想知道我的逻辑有什么问题,而不是给定的解决方案。 谢谢你们!

2 个答案:

答案 0 :(得分:1)

if (!isContains(numbers, check)) ;行中,;终止语句,这意味着您基本上检查numbers数组是否不包含该值,然后继续添加该数字无论如何。您需要做的是,只有在数组中没有数字时才添加数字,方法是在{}语句后面的if中包含条件代码块

if (!isContains(numbers, check)) {
    numbers[counter] = check;
    counter++;
}

答案 1 :(得分:1)

你的&#34;如果&#34;块,检查数组是否包含值似乎是错误的。

if (!isContains(numbers, check)) ;
    numbers[counter] = check;
    counter++;

应该是:

if (!isContains(numbers, check)) {
    numbers[counter] = check;
    counter++;
}