У меня есть некоторые проблемы в java с выводом сканера после вывода, через некоторое время l oop. Сканер сканирует, какой метод go, а затем, когда он возвращается к началу цикла, сбрасывает переменную.
Я уже пробовал это, и не смог найти какое-либо понятное решение (я действительно плохо знаком с java, и мне трудно), или решить это самому. вот полный код (я знаю, что код не настолько эффективен):
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int con=1;
System.out.println("Hey!,welcome to my games!");
Scanner scanner=new Scanner(System.in);
String game;
while(con==1)
{
System.out.println("Here Some games i have(Enter the text for the one you want):\nto stop=0\n1)calculator=1\n2)!Soon! Random numbers");
game=scanner.nextLine();
calculator();
scanner.reset();
System.out.println(game);
// if(game.equals("0")) {
// con=0;
// }
// else if(game.equals("1")) {
// System.out.println("Welcome Back!");
// }
// else {
// System.out.println("There is a mistake in your text");
// }
}
scanner.close();
}
static void calculator() {
int num1,num2,con=1,stop=1;
String op,ad="add",su="sub",mul="multi",di="div";
Scanner af=new Scanner(System.in);
while (con==1) {
stop=1;
System.out.println("Write number 1");
num1=af.nextInt();
System.out.println("Write number 2");
num2=af.nextInt();
System.out.println("Write an operation (one of these):\nAddition=add\nSubtraction=sub\nMultiplication=multi\nDivision=div");
op=af.next();
op=op.toLowerCase();
int minus=num1-num2;
int plus=num1+num2;
if(op.equals(ad)) {
System.out.println("The Operation is:Addition\n"+num1+"+"+num2+"="+plus);
}
else if(op.equals(su)){
System.out.println("The Operation is:Subtraction\n"+num1+"-"+num2+"=" + minus);
}
else if(op.equals(mul)){
System.out.println("The Operation is:Multiplication\n"+num1+"*"+num2+"="+num1*num2);
}
else if(op.equals(di)){
System.out.println("The Operation is:Division\n"+num1+"/"+num2+"="+num1/num2);
}
else {
System.out.println("Um,Did you make a mistake in your text?\nDo you want the calculator again?");
String yn=af.next();
yn=yn.toLowerCase();
if (yn.equals("yes") || yn.equals("yep")) {
stop=0;
}
}
if (stop==1) {
con=0;
}
}
af.close();
}
}
, как вы можете видеть, я попытался решить его и даже добавил комментарий к некоторому коду, но когда запускает метод и возвращается, он не работает, потому что сканер думает, что есть что-то для сканирования, прежде чем я что-то написал. вот исключение -
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:1478)
at Main.main(Main.java:12)