在编程中,当我们使用Scanner类的nextInt()方法从控制台读取用户输入时,如果输入的数据类型与我们期望的不匹配,就会抛出InputMismatchException异常。这个异常通常发生在我们期望输入一个整数,但用户输入了一个非整数的情况下。
例如,假设我们有以下代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个整数:");
int num = scanner.nextInt();
System.out.println("你输入的整数是:" + num);
}
}
如果用户在控制台输入了一个非整数(例如字母、小数等),那么程序就会抛出InputMismatchException异常,并且打印出异常的堆栈信息。这是因为nextInt()方法期望输入一个整数,但实际输入的数据类型与其不匹配,导致异常的抛出。
为了解决这个问题,我们可以在使用nextInt()方法之前,先使用hasNextInt()方法进行判断,确保用户输入的是一个整数。如果返回true,表示输入的是整数,我们再调用nextInt()方法获取输入的整数值。如果返回false,表示输入的不是整数,我们可以给用户一个提示,要求重新输入。
以下是修改后的代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个整数:");
if (scanner.hasNextInt()) {
int num = scanner.nextInt();
System.out.println("你输入的整数是:" + num);
} else {
System.out.println("输入的不是整数,请重新输入!");
}
}
}
这样,当用户输入非整数时,程序会给出相应的提示,避免了InputMismatchException异常的抛出。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云