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

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

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

Если вам нужно безусловно объявить переменную, объявите ее перед свичом.
Егор ГиркоУченик (234) 11 месяцев назад
Гений. Профессионал.
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (267966) 11 месяцев назад
нельзя использовать переменные с изменяемым значением в качестве кейсов в операторе switch
Егор ГиркоУченик (234) 11 месяцев назад
Лучше if?
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (267966) Егор Гирко, ну, можно вставить ветвление 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); 
    } 
Похожие вопросы