Java "не видит" русский язык
Я изучаю Java, дошел до Scanner, хотел вывести ответ, который написан в case, но почему-то программа игнорирует русские символы при написании в терминал(использовал и CMD и PowerShell).
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Текст");
String s = scanner.nextLine();
switch(s) {
case "Первый":
System.out.println("Это первый");
break;
case "Второй":
System.out.println("Это второй");
break;
case "Третий":
System.out.println("Это третий");
break;
default:
System.out.println("Ничего");
}
}
}
Допустим, я пишу в терминал Первый, но вместо текста Это первый, мне пишет Ничего, если тот же самый код написать с Int и использовать числа, то все работает как надо. Откатывался до JDK-17 и JDK-18, не помогло. Использую VSCode, как я думаю, проблема в кодировке, менял на Windows-1251, в теории все работало, ответ был такой, какой надо, но вместо русских букв были "?????". Возможно вопрос написал не совсем правильно, но думаю основную мысль я передал. Буду благодарен, если поможете новичку разобраться. Спасибо!
PS: Если убрать default, то ничего не изменится, просто в терминале ничего не будет.
Ответы (1 шт):
Можно использовать месседж бокс например вот так
import javax.swing.JOptionPane;
public class Test {
public static void main(String[] args) {
String s = JOptionPane.showInputDialog("Введите текст:");
// Print the input for debugging
System.out.println("Вы ввели: '" + s + "'"); // This will help you see exactly what was input
// Handle the input in the same way as before
if (s != null) {
s = s.trim();
switch (s) {
case "Первый":
System.out.println("Это первый");
break;
case "Второй":
System.out.println("Это второй");
break;
case "Третий":
System.out.println("Это третий");
break;
default:
System.out.println("Ничего");
}
} else {
System.out.println("Ввод отменен");
}
}
}
Если вы хотите то можете установить Intellij IDEA Community Edition.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
public class Main {
public static void main(String[] args) {
// Using InputStreamReader to read UTF-8 encoded input
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8))) {
System.out.println("Введите текст:");
String s = reader.readLine(); // Read the input without trimming initially
// Print the input for debugging
System.out.println("Вы ввели: '" + s + "'"); // This will help you see exactly what was input
// Trim the input for comparison purposes
s = s.trim();
switch (s) {
case "Первый":
System.out.println("Это первый");
break;
case "Второй":
System.out.println("Это второй");
break;
case "Третий":
System.out.println("Это третий");
break;
default:
System.out.println("Ничего");
}
} catch (Exception e) {
System.out.println("Ошибка при вводе: " + e.getMessage());
}
}
}
Вывод в консоли при вводе Первый
"C:\Program Files\Eclipse Adoptium\jdk-20.0.2.9-hotspot\bin\java.exe" -javaagent:C:\Users\Admin\AppData\Local\JetBrains\Toolbox\apps\IDEA-C\ch-0\223.8617.56\lib\idea_rt.jar=36059:C:\Users\Admin\AppData\Local\JetBrains\Toolbox\apps\IDEA-C\ch-0\223.8617.56\bin -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath C:\Users\Admin\IdeaProjects\untitled\out\production\untitled Main
Введите текст:
Первый
Вы ввели: 'Первый'
Это первый