Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему boolean переменная не видна в switch?

Егор Гирко Ученик (234), на голосовании 1 месяц назад
В коде при введении в консоль слова start, выполняется проверка, а не в игре ли пользователь? Идее не нравится что-то, считает непроинициализированным мой булен. Если нажать на предложку "branch to бла бла бла.." идея будет жаловаться на другое, она предложит создать локальную переменную (ещё одну!!), и все так же будет жаловаться, но уже на неё, что она не проинициализирована
Голосование за лучший ответ
Андрей Панарин Искусственный Интеллект (224554) 2 месяца назад
В свиче обычно делают только кейсы.
От шапки свича идет прыжок сразу к нужному кейсу.
При этом пропускается весь предыдущий код, включая инициализацию вашей переменной.

Если вам нужно безусловно объявить переменную, объявите ее перед свичом.
Егор ГиркоУченик (234) 2 месяца назад
Гений. Профессионал.
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (241709) 2 месяца назад
нельзя использовать переменные с изменяемым значением в качестве кейсов в операторе switch
Егор ГиркоУченик (234) 2 месяца назад
Лучше if?
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (241709) Егор Гирко, ну, можно вставить ветвление if в конструкцию case, инициировав переменную перед case
         boolean additionalVariable = false; 
 
        switch (variable) { 
            case 2: 
                if (someCondition()) { 
                    additionalVariable = true; 
                    System.out.println("Additional check is true for Case 2"); 
                } else { 
                    System.out.println("Additional check is false for Case 2"); 
                } 
            default: 
                System.out.println("Default case"); 
        } 
 
        System.out.println("Value of additionalVariable: " + additionalVariable); 
    } 
Похожие вопросы