如果条件变为真,即使值不相等

时间:2016-02-15 20:19:48

标签: java

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条件变为真,即使值不相等?

3 个答案:

答案 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已经存在并且不会将其添加到列表中