Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Подскажите, почему компилятор не видит переменную [c]?

[CODE] public static void main(String[] args) {

int k, c, j, a, b, d;

j = 10;

b = 2000;

k = 3000;

d = 4000;

a = 1;

if (j < 100) {

if (j < 90)

a = b;

if (k > j)

c = k - j;

} else

c = d;

System.out.println(a);

System.out.println(c);

System.out.println(k);

}

}[/CODE]

претензия при выводе на печать только к переменной [c]:

The local variable c may not have been initialized

Почему? Как мне ее вывести на печать?

Пример надуманный, речь идет только о видимости переменных, так вот, не пойму, как ее вывести в консоль.

JavaУсловный оператор
Сафонов Михаил Иванович
  ·   · 228
Studio 22 - это открытая площадка для реализации...  · 19 нояб 2020  · std-22.github.io
Отвечает
Ilya Tolokonov

Здравствуйте, в вашем примере все переменные являются локальными, то есть не выходят за пределы одного метода. Все локальные переменные должны быть инициализированы, Чтобы инициализировать переменную необходимо воспользоваться оператором присвоения (=). Почему это так важно? После операции присвоения, под переменную выделяется память, и компилятор узнает откуда ему брать то или иное значение. Если память не будет выделена, то умный компилятор сообщает нам об этом (The local variable c may not have been initialized). Чтобы ваш пример заработал достаточно добавить одну строчку кода, например так:

j = 10;

c = 0;

b = 2000;