我在这里看到了这个问题,但是所有的解决方案都被称为“地图”,现在我不知道它是什么,我正在学习这本书(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 - 没有结果......
我想知道我的逻辑有什么问题,而不是给定的解决方案。 谢谢你们!
答案 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++;
}