Я создал интерактивный класс, который решает проблемы кинематических уравнений (доступ к которым осуществляется в другом классе в цикле пользовательского ввода: mathiverse), который работает просто отлично, но после получения ответа он выдает NoSuchElementException
.
Я попытался переместиться туда, где я закрываю свой сканер, но он не сработал, и я почти уверен, что проблема в том, как мой класс Kinematic функционирует в моем цикле ввода.
Мой пользовательЦикл ввода и кинематический конструктор (не в одном классе):
while(!(input.equals("exit")))
{
if(input.equals("help"))
{
System.out.println("~ Commands ~");
System.out.println("help - brings up a list of
commands(what you're reading)");
System.out.println("kinematic - solves a kinematic
equations problem; requires input of known and unknown
variables");
System.out.println("exit - closes the program");
System.out.println("~~~~~~~~~~~~");
}
//user decides to explore kinematic options
if(input.equals("kinematic"))
{
Kinematic calc = new Kinematic();
System.out.println(calc.answer());
}
input = scan.nextLine();
}
public Kinematic()
{
Scanner scanMath = new Scanner(System.in);
System.out.println("If you are solving for the variable, enter \"?\",
if the variable is not given, enter a space.");
System.out.println("Enter the acceleration: ");
acc = scanMath.nextLine();
System.out.println("Enter the displacement: ");
disp = scanMath.nextLine();
System.out.println("Enter the initial velocity: ");
init = scanMath.nextLine();
System.out.println("Enter the final velocity: ");
fin = scanMath.nextLine();
System.out.println("Enter the time: ");
time = scanMath.nextLine();
scanMath.close();
}
После ответа я хотел бы, чтобы мой код продолжал поиск ввода, но он выдает это сообщение:
Исключение в потоке "main" java.util.NoSuchElementException: строка не найдена в java.base / java.util.Scanner.nextLine (Scanner.java:1651) в Mathiverse.main (Mathiverse.java:53)