线程主java.util.InputMismatchException错误中的exception

我有一个关于发生了什么的问题,每当我尝试编译它时它会一直给我一个这样的错误:

Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Unknown Source) at java.util.Scanner.next(Unknown Source) at java.util.Scanner.nextInt(Unknown Source) at java.util.Scanner.nextInt(Unknown Source) at Person.main(Person.java:38) 

我想要的只是让用户能够输入他们的年龄和名字并将其存储在“年龄”和“名称”变量中,然后将其打印在底部字符串中。 如果有人想帮我清理我的代码,那也不会有害。

 import java.util.*; import java.io.*; import java.util.Scanner; public class Person { public static void main(String[]args) { int age; int name; Scanner scan = new Scanner(System.in); System.out.println("Enter in your age."); age = scan.nextInt(); if (age = 18) { System.out.println("Ah, and adult! Good."); } @SuppressWarnings("resource") Scanner in = new Scanner(System.in); System.out.println("Enter in your name"); name = in.nextInt(); System.out.println("So you're " + age + " years old and your name is " + name); } } 

问题

  int name; //Name should be of type String ... System.out.println("Enter in your name"); name = in.nextInt(); //It doesn't handle the string since your using `nextInt` 

  String name; ... System.out.println("Enter in your name"); name = in.nextLine(); 

为什么名称是整数? int name;

我怀疑你使用字母字符输入你的名字……并且在这一行得到例外: name = in.nextInt();

name 应该是整数。 它应该是一个字符串。

因此, string name;name = in.nextLine();

这意味着您的程序已尝试读取一个不是整数的整数值。

当使用name = in.nextInt();

它应该是string.not int