Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我是java的初学者,有人能解释一下我为什么会得到;输入失配激励“;在这里_Java - Fatal编程技术网

我是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()
没有看到名称(请参阅)。