Как импортировать сканер в класс под названием System - PullRequest
0 голосов
/ 26 мая 2020

Это код, который я пытаюсь выполнить, имя класса - SystemTest, поскольку оно требуется для части проекта:

public class SystemTest {

    public static void main(String[] args) {

        int optionSelect;

        java.util.Scanner sc = new java.util.Scanner(System.in);
        optionSelect = sc.nextInt();

    }

}

Но я получаю следующую ошибку:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    in cannot be resolved or is not a field

    at SystemTest.main(SystemTest.java:15)

Чтобы быть более точным c, in из System.in подчеркнут с ошибкой.

Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 26 мая 2020

Не называйте свои классы теми же именами, что и в пакете java.lang.

Поскольку этот пакет автоматически импортируется, System.in обычно относится к классу JDK, но теперь он будет ссылаться на ваш System класс, требуя использования полностью квалифицированного name java.lang.System для обозначения класса JDK.

Это легко вызывает путаницу, поскольку Java программисты ожидают, что System означает java.lang.System. Если вы не можете придумать отличное имя, стиль именования MySystem работает для хобби-проектов.

Вам также следует использовать импорт, чтобы не указывать FQN везде, как вы делаете с Scanner в вашем коде.

2 голосов
/ 26 мая 2020

new java.util.Scanner(java.lang.System.in);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...