我是Java的初学者并且最近从C切换到Java,我使这个程序搜索重复的值,但每次运行程序时我都得到输出:"找到重复的值"
我的代码:
public class Duplicate {
public static void main(String[] args) {
boolean found;
int[] nums = { 184, 254, 123, 654, 146, 392 };
int x, i;
for (i = 0; i < 6; i++) {
for (x = 1; x < 5; x++) {
if (x != i && nums[x] == nums[i])
found = true;
}
}
if (found = true)
System.out.println("Duplicate value found ");
else
System.out.println("Duplicate value not found ");
}
}
此处没有重复值,但它将输出显示为
发现重复值
这不是这种情况。你可以在这段代码中指出我的错误吗?
答案 0 :(得分:1)
if(found = true)表示您将true指定给找到的变量,它将始终返回true。这就是它始终打印找到的重复值的原因。 将其更改为if(found == true)
答案 1 :(得分:0)
我认为您在开始时忘记了found = false
。您在第二个if
中使用 = 而不是 == 。
答案 2 :(得分:0)
@Kotshi 我试过这个
public class Duplicate {
public static void main(String[] args) {
boolean found = false;
int[] nums = { 184, 254, 123, 654, 184, 392 };
int x, i;
for (i = 0; i < 6; i++) {
for (x = 1; x < 5; x++) {
if (x != i && nums[x] == nums[i])
found = true;
}
}
if (found == true)
System.out.println("Duplicate value found ");
else
System.out.println("Duplicate value not found ");
}
}
先生,谢谢你! :D它有效。
答案 3 :(得分:0)
我不知道你想要实现什么,但也许不使用数组你可以使用Set或Map? Set不允许任何重复值,Map不允许重复键。