Я не могу понять, почему в NetBeans у меня вылетает исключение NoSuchElementException ещё до ввода данных. До этого программу запускал в VS Code, и там всё работало хорошо.
Класс Main, который вызывает меню:
package Main;
public class Main {
public static void main(String args[ ]) {
Menu.run();
}
}
Класс Menu:
package Main;
import java.util.Scanner;
import java.util.InputMismatchException;
public class Menu {
private static int menuChoice = -1;
private static void showMenu() {
System.out.println("1 - to create and add new object");
System.out.println("2 - to delete object");
System.out.println("3 - to find object");
System.out.println("4 - to print all list");
System.out.println("5 - to execute abstract method");
System.out.println("0 - to exit program");
}
private static int getMenuChoice() {
Scanner in = new Scanner(System.in);
do {
try {
menuChoice = in.nextInt();
}
catch (InputMismatchException e) {
System.out.println("You have entered incorrect data");
in.nextLine();
}
if (menuChoice < 0 || menuChoice > 5)
System.out.println("The value must be from 0 to 5");
} while (menuChoice < 0 || menuChoice > 5);
return menuChoice;
}
public static void run() {
do {
showMenu();
menuChoice = getMenuChoice();
switch (menuChoice) {
case 1:
Group.addElement();
break;
case 2:
Group.delObj();
break;
case 3:
Group.findObj();
break;
case 4:
Group.printAllList();
break;
case 5:
Group.executeAM();
break;
case 0:
}
} while (menuChoice != 0);
}
}
В консоли:
JAVA_HOME="C:\Program Files\Java\jdk-14.0.2"
cd C:\Users\ПК\Documents\NetBeansProjects\Main; C:\Users\ПК\.gradle\wrapper\dists\gradle-6.3-bin\8tpu6egwsccjzp10c1jckl0rx\gradle-6.3\bin\gradle --configure-on-demand -x check run
Configuration on demand is an incubating feature.
> Task :compileJava UP-TO-DATE
> Task :processResources NO-SOURCE
> Task :classes UP-TO-DATE
> Task :run FAILED
1 - to create and add new object
2 - to delete object
3 - to find object
4 - to print all list
5 - to execute abstract method
0 - to exit program
Exception in thread "main" java.util.NoSuchElementException
at java.base/java.util.Scanner.throwFor(Scanner.java:937)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at Main.Menu.getMenuChoice(Menu.java:22)
at Main.Menu.run(Menu.java:37)
at Main.Main.main(Main.java:5)
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':run'.
> Process 'command 'C:\Program Files\Java\jdk-14.0.2\bin\java.exe'' finished with non-zero exit value 1
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 447ms
2 actionable tasks: 1 executed, 1 up-to-date
В описании Scanner.html#nextInt написано, что выбрасывается исключение NoSuchElementException, если данных больше нет.
Попробуйте ловить исключение и выходить из цикла:
private static int getMenuChoice() {
Scanner in = new Scanner(System.in);
do {
try {
menuChoice = in.nextInt();
}
catch (InputMismatchException e) {
System.out.println("You have entered incorrect data");
in.nextLine();
}
catch (NoSuchElementException e) {
menuChoice = -1;
break;
}
if (menuChoice < 0 || menuChoice > 5)
System.out.println("The value must be from 0 to 5");
} while (menuChoice < 0 || menuChoice > 5);
return menuChoice;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
WebSecurityConfigjava
я - новичок, так что не судите строгоЯ разрабатываю приложение на Java под Android
У меня есть задача, нужно сделать фильтры для стримов с разными типами объектов
Пытаюсь сделать тест, имитация работы 2х пользователей над док-мИспользую библиотеки RestAssured и JerseyTest