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]если условие становится истинным, даже если значения не равны
фактический выход я want is: [1, 5, 0, 2, -3, 10, 0, 0]
При сравнении значения 0 со значениями целочисленного массива C, если условие (if (0 == 1)) является становясь истинным каждый раз.
Может кто-нибудь объяснить, почему условие if становится истинным, даже если значения не равны?
Вы смотрите на это неправильно. Вы должны спрашивать, что не так с вашим кодом (значения, очевидно, не то, что вы думаете, что они есть), а не предполагать, что сам java работает неправильно. Пройдите свой код и убедитесь сами. – tnw
Использовать отладчик, так что вам надоело видеть, что эти «отладки моего кода для меня не работают» – redFIVE
Непонятно, что должен делать этот код (исключить дубликаты?), Но причина, по которой 0 в позиции 3 не копируется к выходному массиву ясен - выходной массив уже содержит 0s (он содержит все 0s по умолчанию при его создании), поэтому 'if (integers [i] == (c [k])) истинно для хотя бы одного значение 'k'. – Eran