Часть кода ниже.
В первом цикле присваиваю значение переменной x порядковый номер ячейки в массиве, которая прошла по критериям 1-го цикла.
Во втором цикле я хочу чтобы число, которое выбрал первый массив, не участвовало в анализе (условие условного оператора во втором цикле).
Однако компилятор выдает ошибку "Variable 'x' might not have been initialized".
Внимание вопрос, почему компилятор не видит, что переменной x присвоено значение и как это вылечить.
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int[] list = new int[5];
int i1, i2, i3, i4, i5, x, y, z;
i1 = list[1];
for (int i = 0; i < list.length; i++) {
if (i1 >= list[i]) {
i1 = list[i];
x = i;
}
}
i2 = list[1];
for (int i = 0; i < list.length; i++) {
if (i2 >= list[i] && i != x) {
i2 = list[i];
y = i;
}
}
Руслан
41 уровень
почему не присваивается значение переменной
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
IceBergMaster
26 мая 2019, 20:27
x находится в условии, которое может и не отработать.
0
Руслан
26 мая 2019, 22:37
почему тогда компилятор не ругается на переменную i1, хотя условие присвоения значения для переменных i1 и x одинаковое.
0
IceBergMaster
26 мая 2019, 22:46
Нет, i1 идет ещё до условия.
0
Руслан
26 мая 2019, 23:08
да, тоже уже обратил внимание, присвоил в самом начале х-су значение по умолчанию 0 и все заработало.
кст еще одну ошибку нашел, i1 надо присвоить значение не list[1], а list[0] т.к. нумерация ячеек в массиве начинается не с 1, а с 0.
задача решена! спасибо за помощь!)
0