线程Java.util.NoSuchElementException中的Java异常
我有一个java应用程序源代码,它得到了一个和我在这里编写代码的应用程序相同的错误。 他们两人都有这样的想法: 线程“main”java.util.NoSuchElementException中的异常 如果我解决了这个问题,那么我就可以在我的主java应用程序中解决这个问题 当我运行这个java应用程序时,它会运行一次,当返回到do while循环时,它会出错。 线程“main”java.util.NoSuchElementException中的异常 代码:线程Java.util.NoSuchElementException中的Java异常,java,Java,我有一个java应用程序源代码,它得到了一个和我在这里编写代码的应用程序相同的错误。 他们两人都有这样的想法: 线程“main”java.util.NoSuchElementException中的异常 如果我解决了这个问题,那么我就可以在我的主java应用程序中解决这个问题 当我运行这个java应用程序时,它会运行一次,当返回到do while循环时,它会出错。 线程“main”java.util.NoSuchElementException中的异常 代码: 有人能帮我解决这个问题吗?您正在关闭
有人能帮我解决这个问题吗?您正在关闭
sum()
和sub()
末尾的扫描仪,您不应该这样做。删除这两个语句,问题应该得到解决
发生的情况是,Scanner#close()
方法也会关闭底层输入流,因此下次通过主循环系统时,
中的已关闭,导致异常。我认为您应该一次性打开扫描仪
- 将其用作专用静态字段
- 在主菜单的开始处初始化它
- 最后把它关上
- 称之为正常
祝您好运“线程中的异常”main“java.util.NoSuchElementException”
您就得到了这些吗?没有堆栈跟踪?没有行号?它不会解决您的问题,但在sub和sum方法中,您都使用in.nextInt()读取浮点值;这是为自己设置了一个非常容易抛出的InputMismatchException。编辑:我只是复制了你的代码,并没有问题地运行了它。下面的答案都是正确的。我能重现吉姆解释的问题。然后,Pignic为您提供了解决方案。您可能还需要添加一些验证,以确认输入了一个数字。他已经创建了新的扫描仪,关闭新的扫描仪并阅读Javadoc中的API描述并不重要。关闭扫描仪
关闭底层流。@JimGarrison在添加注释之前,他发布了底层输入流也被关闭的消息。
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();
}