我是java的初学者,有人能解释一下我为什么会得到;输入失配激励“;在这里
在这里,我试图输入和打印员工的一些细节,一切看起来都很好,但我得到一个例外为什么我是java的初学者,有人能解释一下我为什么会得到;输入失配激励“;在这里,java,Java,在这里,我试图输入和打印员工的一些细节,一切看起来都很好,但我得到一个例外为什么 import java.util.Scanner; class EmpDet { //here details int age; String name; int ssn; public EmpDet(int age,String name,int ssn)
import java.util.Scanner;
class EmpDet
{ //here details
int age;
String name;
int ssn;
public EmpDet(int age,String name,int ssn)
{
//assign to constructor
this.age = age;
this. name = name;
this.ssn = ssn;
System.out.println(age+" "+name+" "+ssn); //printing details
}
public static void main(String args[])
{
Scanner sc = new Scanner(System.in);
int age = sc.nextInt();
String name = sc.nextLine(); //InputMismatchException in this line
int ssn = sc.nextInt();
EmpDet det = new EmpDet(age,name,ssn);
}
}
你可能想一行一行地抓取。有了行之后,就可以尝试将输入解析为整数
Scanner sc = new Scanner(System.in);
int age = Integer.parseInt(sc.nextLine());
String name = sc.nextLine();
int ssn = Integer.parseInt(sc.nextLine());
EmpDet det = new EmpDet(age,name,ssn);
如果用户的输入不符合整数的条件,那么在解析过程中加入try-catch也是明智的
Scanner sc = new Scanner(System.in);
int age = Integer.parseInt(sc.nextLine());
String name = sc.nextLine();
int ssn = Integer.parseInt(sc.nextLine());
EmpDet det = new EmpDet(age,name,ssn);
注意,nextLine()只获取数字而不获取新行(enter)当您获得异常时,是否有任何文本供
sc.nextLine()
拾取?您是否在ssn中添加破折号?@hellyale我相信异常发生在sc.nextLine
的行上,而不是sc.nextLine
。您尝试过调试吗?无法抛出输入不匹配异常
。您在ssn=sc.nextInt()
调用中遇到错误,因为它看到了“名称”,因为nextLine()
没有看到名称(请参阅)。