0

我有一个 java 应用程序源代码,它得到一个与我在这里编写代码的应用程序相同的错误。他们都得到了这个:“线程“main”java.util.NoSuchElementException中的异常“如果我解决了这个问题,那么我可以在我的主要java应用程序中解决这个问题。

当我运行这个 java 应用程序时,它运行一次,当返回到 do-while 循环时,它会出错。" 线程 "main" java.util.NoSuchElementException 中的异常 "

代码:

public static void main (String args[]) {
    int c=-1;
    Scanner input=new Scanner(System.in);
    do{
        System.out.println("1- Sum");
        System.out.println("2- Sub");
        System.out.print("Enter your selection : > ");
        c=input.nextInt();
        res(c);
    }while(c!=0);
    input.close();
}

public static void res(int c) {
    switch (c) {
    case 1:
        System.out.println("++++++++++");
        sum();
        break;
    case 2:
        System.out.println("----------");
        sub();
        break;

    default:
        break;
    }
}
public static void sum() {
    float a,b,c;
    Scanner in=new Scanner(System.in);
    System.out.println("enter two number :");
    System.out.print("first number : ");
    a=in.nextInt();
    System.out.print("second number : ");
    b=in.nextInt();
    c=a+b;
    System.out.println(a+" + "+b+" = "+c+"   END.");
    in.close();
}
public static void sub() {
    float a,b,c;
    Scanner in=new Scanner(System.in);
    System.out.println("enter two number :");
    System.out.print("first number : ");
    a=in.nextInt();
    System.out.print("second number : ");
    b=in.nextInt();
    c=a-b;
    System.out.println(a+" - "+b+" = "+c+"   END.");
    in.close();
}

有谁可以帮我解决这个问题?

4

2 回答 2

0

我认为您应该一劳永逸地打开您的扫描仪

  • 将其用作私有静态字段,
  • 在 main 的开头初始化它,
  • 最后关闭它,
  • 称之为正常。

祝你好运

于 2013-10-18T20:40:10.887 回答
0

您正在关闭andScanner的末尾,您不应该这样做。删除这两个语句,问题应该得到解决。sum()sub()

发生的情况是该Scanner#close()方法也关闭了底层输入流,因此下一次通过主循环System.in已关闭,导致异常。

于 2013-10-18T20:32:39.887 回答