У меня простой вопрос о двух версиях одного и того же кода, одна с использованием тернарного оператора, а другая с помощью операторов if и почему они отличаются в своем ответе.
Справочная информация о проблеме. Я пытаюсь легко отсортировать массив целых чисел и получить диапазон массива (max & min)
массив дан: [6, 2, 3, 8]
Если версия выписки:
public int range(int[] num_list) {
int[] min_max = new int[2];
for (int i : statues) {
if (min_max[0] == 0) {
min_max[0] = i;
} else {
if (i < min_max[0]) min_max[0] = i;
}
if (min_max[1] == 0) {
min_max[1] = i;
} else {
if (i > min_max[1]) min_max[1] = i;
}
System.out.println(String.valueOf(min_max[0] + " | " + min_max[1]));
}
}
Журнал консоли:
6 | 6
2 | 6
2 | 6
2 | 8
Версия троичного оператора:
public int range(int[] num_list) {
int[] min_max = new int[2];
for (int i : statues) {
min_max[0] = min_max[0] == 0 ? i
: (min_max[0] = i < min_max[0] ? i : i);
min_max[1] = min_max[1] == 0 ? i
: (min_max[1] = i > min_max[1] ? i : i);
System.out.println(String.valueOf(min_max[0] + " | " + min_max[1]));
}
}
Журнал консоли:
6 | 6
2 | 2
3 | 3
8 | 8
Почему неверна версия троичного оператора? Насколько мне известно, это должна быть троичная реплика версии оператора if?