Почему не работает сравнение двух целочисленных значений? - PullRequest
1 голос
/ 23 октября 2019

Иногда значения, которые не совпадают со значением по сравнению с, не устанавливаются в нуль, даже если они содержат разные значения. Значения значений массива никогда не изменяются, но значение результатов массива изменяется.

static int[][][] Results= new int[1000][30][3];
public static int[] Values= new int[3]; //is in a different class

...

for (int i = 0; i < Results.length; i++) {

if ((Results[i][0][0]) != (Input.Values[0])
                    && (Results[i][0][1]) != (Input.Values[1])
                    && (Results[i][0][2]) != (Input.Values[2])) {

                Results[i] = null;
            }else{
                System.out.println(i+ " Results: " + Results[i][0][0] + " " +Results[i][0][1]+ " " + Results[i][0][2]+  " Values: " + Input.Values[0]  +" "+ Input.Values[1]+ " "+ Input.Values[2]);
            }
}

Это вывод:

...

3 Результаты: 27 19 34 Значения: 27 17 36

4 Результаты: 27 38 15 Значения: 27 17 36

5 Результаты: 27 38 15 Значения: 27 17 36

6 Результаты: 27 23 30 Значения: 27 17 36

7 Результаты: 27 23 30 Значения: 27 17 36

8 Результаты: 27 46 7 Значения: 27 17 36

9 Результаты: 27 39 14 Значения: 27 17 36

...

Например, в 3. Выход 27 сравнивается с 27, 19 сравнивается с 17 и 34сравнивается с 36.

Что я здесь не вижу? Я просмотрел другие посты, но там проблема была вызвана, например, сравнением массива, содержащего целые числа, с целым числом. Я почти уверен, что это не тот случай ..

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 23 октября 2019

Проблема в вашем заявлении if. Измените ваши условия на ||, а не &&. 27 - это общее число всех ваших проблем. С && они ВСЕ должны быть разными.

...