Top.Mail.Ru
Ответы

Начал учить 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{ } } }

По дате
По Рейтингу
Аватар пользователя
Искусственный Интеллект
1нед
Изменено
1
if (role == "Admin") ;

Здесь буквально сказано: если строка, на которую ссылается переменная role, по ссылке совпадает со строковым литералом "Admin" (а такого никогда не будет, так как role заполнена пользовательским вводом - отдельной строкой по другому адресу в памяти), тогда выполнить оператор "точка с запятой", который ничего не делает.

А дальше безусловно выполняется блок {} с println.

После закрытия этого блока идет слово else, которое тут неуместно, так как предшествующий ему блок был безусловным, без if.

Как решить?

1) Удалите точку с запятой в строчке с if, чтобы этот if относился к идущему ниже блоку. Тогда else логически увяжется с if.

2) Исправьте условие, чтобы строки сравнивались через equals:

1
if ("Admin".equals(role))

Рекомендую завести привычку при сравнении через equals ставить строковый литерал слева, поскольку он гарантированно не равен null. Вызовы метода equals у значения null приводят к ошибке NullPointerException, поэтому их следует избегать.

Аватар пользователя
Оракул
1нед
12345678910111213141516171819202122232425
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();
    }
}