public static void main(String[] args) {
// TODO Auto-generated method stub
int[] num=new int[] {1, 5, 0,2, 2, -3, 1, 10};
Sample.getSocks(num);
}
public static void getSocks(int[] integers) {
int[] c=new int[integers.length];
int a=0;
for(int i=0;i<integers.length;i++)
{
int count=0;
for(int k=0;k<c.length;k++)
{
if(integers[i]==(c[k]))
{
count=1;
}
}
System.out.println("value"+integers[i]);
System.out.println(count);
if(count!=1)
{
c[a]=integers[i];
a++;
}
}
System.out.println(java.util.Arrays.toString(c));
}
以上代码的输出为:[1,5,2,-3,10,0,0,0]
我想要的实际输出是:[1,5,0,2,-3,10,0,0]
在将值0与整数数组C的值进行比较时,如果条件(if(0 == 1))每次都变为真。
任何人都可以解释为什么if条件变为真,即使值不相等?
答案 0 :(得分:2)
请记住,c
开始填充零
您应该使用:
for(int k=0;k<a;k++)
{
if(integers[i]==(c[k]))
{
count=1;
}
}
代替:
for(int k=0;k<c.length;k++)
{
if(integers[i]==(c[k]))
{
count=1;
}
}
答案 1 :(得分:1)
你的数组c
空了,尝试这样做每次都给出相同的重复:
if(integers[i]==(c[k]))
因为您始终c[k] = 0
答案 2 :(得分:0)
整数数组初始化为全零。您收到错误的输出,因为当您到达integers[2]==(c[k])
时,您正在比较0到0(即true
)并将计数设置为1,因此您的代码会告诉您0已经存在并且不会将其添加到列表中