Начал учить Java помогите пожалуйста .
Здравствуйте совсем недавно начал учиться java смотрел курс от блогера вроде всё повторяю также показывает ошибку . Код ниже , но я его ещё не дописал . Вот ссылка на ролик :
https://www.youtube.com/watch?v=SdGp-5pcPeA&list=PLDyJYA6aTY1lT614ixLYq48har7EnCXpk&index=10
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("Введите роль: "); String role = scanner.nextLine(); if (role == "Admin") ; { System.out.println("Все пользователи"); } else{ } } }
if (role == "Admin") ;
Здесь буквально сказано: если строка, на которую ссылается переменная role, по ссылке совпадает со строковым литералом "Admin" (а такого никогда не будет, так как role заполнена пользовательским вводом - отдельной строкой по другому адресу в памяти), тогда выполнить оператор "точка с запятой", который ничего не делает.
А дальше безусловно выполняется блок {} с println.
После закрытия этого блока идет слово else, которое тут неуместно, так как предшествующий ему блок был безусловным, без if.
Как решить?
1) Удалите точку с запятой в строчке с if, чтобы этот if относился к идущему ниже блоку. Тогда else логически увяжется с if.
2) Исправьте условие, чтобы строки сравнивались через equals:
if ("Admin".equals(role))
Рекомендую завести привычку при сравнении через equals ставить строковый литерал слева, поскольку он гарантированно не равен null. Вызовы метода equals у значения null приводят к ошибке NullPointerException, поэтому их следует избегать.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Введите роль: ");
String role = scanner.nextLine();
// 1. Убрали лишнюю точку с запятой.
// 2. Используем .equals() для правильного сравнения содержимого строк.
if ("Admin".equals(role)) {
System.out.println("Все пользователи");
} else if ("User".equals(role)) {
System.out.println("Добро пожаловать, пользователь!");
}
else {
System.out.println("Неизвестная роль, доступ запрещен.");
}
// Хорошей практикой является закрытие сканнера после использования,
// чтобы освободить ресурсы.
scanner.close();
}
}