“线程中的异常”;“主要”;字符串输入的java.util.InputMismatchException

“线程中的异常”;“主要”;字符串输入的java.util.InputMismatchException,java,class,inheritance,Java,Class,Inheritance,我是java新手 当我尝试为这个程序输入值时,我得到 Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Scanner.java:864) at java.util.Scanner.next(Scanner.java:1485) at java.util.Scanner.nextInt(Scanner.java:21

我是java新手

当我尝试为这个程序输入值时,我得到

    Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:864)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextInt(Scanner.java:2117)
    at java.util.Scanner.nextInt(Scanner.java:2076)
    at SugarSmashPlayer.get(Game.java:10)
    at Game.main(Game.java:44)
我不知道为什么会这样。我的猜测是,我对字符串声明或输入法做了一些错误的处理。你能帮忙吗。如果我用输入行声明字符串数据类型,程序不会显示错误。但是我想在上面用类而不是在构造函数中声明它

import java.util.*;
职业球员{
扫描仪输入=新扫描仪(系统输入);
int id;int n=0;字符串名称;
int[]arr=新int[40];
void get(){
id=in.nextInt();
name=in.nextLine();
对于(int i=0;i=100){i++;}
其他的
{i=11;}
}
}
空集(){
System.out.println(id+“”+name+“”);
对于(int i=0;i您正在使用的

id = in.nextInt();
如果有人输入的不是数字,则会发生此异常

您最好调用
nextLine()
,然后检查输入是否为数字。

您的输入是:

1
abc
nextInt
将输入的下一个标记读取为int,从而将整数值1读取到
id
字段中。 然后,如果您使用
nextLine
,则它将使用
”初始化
name
字段。
nextLine的Javadoc
状态:

将此扫描仪移过当前行并返回跳过的输入。此方法返回当前行的其余部分,不包括结尾处的任何行分隔符。该位置设置为下一行的开头

然后,
arr[i]=in.nextInt()
将尝试读取
abc
,从而导致错误

您应该以以下方式输入:

1 abc
532
235
或者您需要将代码更改为:

id=Integer.parseInt(in.nextLine());//读取整行

请设置代码格式,并注明发生异常的行HI。感谢您的回复。很抱歉,我是stackoverflow新手。不确定如何设置代码格式。如果我为name变量输入字符串abc,则会出现错误。感谢您的回复。但我的输入是1,abc,然后继续。根据代码,我已给出一个整数id和字符串名。但只要我输入abc,它就会显示错误
1 abc
532
235