Кажется, есть много вопросов об этой проблеме с java.util.Scanner
. Я думаю, что более читаемым / идиоматическим решением было бы вызвать scanner.skip("[\r\n]+")
, чтобы удалить любые символы новой строки после вызова nextInt()
.
ИЗМЕНИТЬ: как показано ниже, как @PatrickParker, это вызовет бесконечный цикл, если пользовательские входы любые пробелы после номера. См. Их ответ на лучший шаблон для использования с пропуском: https://stackoverflow.com/a/42471816/143585
Структура проекта выглядит неплохо, но я сомневаюсь в конфигурации Eclipse. Похоже, ваш пакет не является частью Java Source.
Выполняйте следующие шаги:
1. Проверьте Source
для проекта. Перейдите к свойствам проекта, Java Build Path
и вкладке Source
, найдите записи src\main\java
и src\main\resources
. Если нет, нажмите Add Folder
, чтобы добавить исходные папки, и он будет похож на нижеследующий:
2. Перейдите к Deployment Assembly
и убедитесь, что у вас есть сопоставления ввода развертывания в правильном направлении. Если вы не найдете Deployment Assembly
, перейдите к Project Facets
и перейдите к опции для преобразования проекта в фасетную форму. В Project Facets
вы должны выбрать Dynamic Web Module
.
Deployment Assembly
должны иметь сопоставления от Maven Dependencies
до WEB-INF/lib
, /src/main/webapp
до /
, src/main/resources
- WEB-INF/classes
и src/main/java
- WEB-INF/classes
. Если какая-либо из этих записей отсутствует, вы можете нажать Add
и выбрать Folder
или Libraries
по мере необходимости.
3. Убедитесь, что вы обращаетесь к проекту с использованием имени Context Root
, указанного в Web Project Settings
вашего проекта, если вы развертываете приложение через Eclipse, а не через maven или какой-либо другой инструмент.
В приведенном выше случае вы можете получить доступ к приложению localhost:8080/UI
, где порт сервера 8080
может меняться в соответствии с конфигурацией.
Ваш код в порядке. Я выполнял их без каких-либо изменений на сервере приложений Tomcat 8
. Используйте Maven для упаковки war
, mvn clean package
.