Задать вопрос
dan1kcode
@dan1kcode

Почему ответ на русском языке в терминале VSC не принимается и просто скипается?

При вводе русского ответа, который прописан в условиях, терминал просто скипает его и не отвечает. Если введу значение string на английском, то терминал спокойно даст ответ, но на русском он просто не хочет отвечать. В чем проблема?

import java.util.Scanner;

public class Switch {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in, "UTF-8");
        System.out.println("Введите возраст");
        String age = scanner.nextLine();
        switch(age){
            case "ноль" : 
                System.out.println("Ты родился");
                break;
            case "шесть" :
                System.out.println("Ты пошел в школу");
                break;
            case "восемнадцать" :
                System.out.println("Ты закончил школу");
                break;
            default :
                System.out.println("Значения нет в списке");
        }
    }
}
  • Вопрос задан
  • 145 просмотров
Подписаться 1 Простой 5 комментариев
Решения вопроса 1
@rPman
Добавь в switch case секцию default: и выведи на экран что у тебя в age (что бы увидеть невидимые символы типа табуляция, \n и т.п, сериализуй его чем то типа json или если у тебя java 15 версии String.escape() ) либо отладкой проанализируй содержимое после ввода слова с консоли.

Еще момент, у тебя switch подчеркнут варнингом, скорее всего из-за отсутствия default, но есть еще вариант, на сколько я знаю до кажется 7 версии строки в switch использовать нельзя (в том же c++ это вообще было типа не ошибка, но строки не сравнивались, а использовались указатели на них, соответственно это работало как ожидается только для констант) может оно об этом тебе и говорит?

upd. в windows, java Scanner нужно принудительно указать в какой кодировке будет поступать ввод, что бы она корректно конвертировала во внутреннее представление, можно это сделать так
Scanner scanner = new Scanner(System.in, "CP866");
или при запуске приложения
java -Dfile.encoding=cp866 Switch
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы