scanner中InputMisMatchException处理

我们知道在使用scanner进行控制台输入时候,使用next()方法输出,但是这种方法存在弊端,比如你使用nextInt()方法,但是输入一个字符串类型,就会抛出InputMisMatchException异常。

首先来看一下scanner在jdk中的一些方法:

 

Stringnext()
查找并返回来自此扫描器的下一个完整标记。
Stringnext(Pattern pattern)
如果下一个标记与指定模式匹配,则返回下一个标记。
Stringnext(String pattern)
如果下一个标记与从指定字符串构造的模式匹配,则返回下一个标记。
BigDecimalnextBigDecimal()
将输入信息的下一个标记扫描为一个 BigDecimal
BigIntegernextBigInteger()
将输入信息的下一个标记扫描为一个 BigInteger
BigIntegernextBigInteger(int radix)
将输入信息的下一个标记扫描为一个 BigInteger
booleannextBoolean()
扫描解释为一个布尔值的输入标记并返回该值。
bytenextByte()
将输入信息的下一个标记扫描为一个 byte。
bytenextByte(int radix)
将输入信息的下一个标记扫描为一个 byte。
doublenextDouble()
将输入信息的下一个标记扫描为一个 double。
floatnextFloat()
将输入信息的下一个标记扫描为一个 float。
intnextInt()
将输入信息的下一个标记扫描为一个 int。
intnextInt(int radix)
将输入信息的下一个标记扫描为一个 int。
StringnextLine()
此扫描器执行当前行,并返回跳过的输入信息。
longnextLong()
将输入信息的下一个标记扫描为一个 long。
longnextLong(int radix)
将输入信息的下一个标记扫描为一个 long。
shortnextShort()
将输入信息的下一个标记扫描为一个 short。
shortnextShort(int radix)
将输入信息的下一个标记扫描为一个 short。

我们可以看到基本上每种类型的数据都有对应的方法,如果控制台输入的与你设置的不匹配,就会出现异常。

Scanner sc=new Scanner(System.in);

System.out.println("向控制台输入一个整数类型的数据");

sc.nextInt();

拿上面这个来举例说明,当你在控制台输入时,虽然有提示让用户输入整数类型的数据,但是用户万一输入其他的类型就会抛出异常,这就违反了java的健壮性,因为一点小错误,就导致整个系统都停止了,所以我们需要通过异常处理来解决,那么怎么解决呢

思路:利用try-catch捕获异常,每次输入不匹配的时候我们就抛出一个提示,让其重新输入,直到输入正确的数据类型为止。

import java.util.Scanner;

public class scannerTest {
		 
	    static Scanner input = new Scanner(System.in);
	 
	    public static void main(String[] args) {
	        while (true) {//设置一个死循环
	            try {
	                acceptPrint();//当输入正确数据后,执行break语句,跳出循环
	                break;
	            } catch (Exception e) {	  
	                input = new Scanner(System.in);
	            }
	        }
	    }
	 
	    public static void acceptPrint() {
	        System.out.println("请输入一个整数:");
	        int temp = input.nextInt();
	        System.out.println(temp);
	    }
	}

我们运行后发现,如果你输入的不是int型的,就会一直提示让你输入,直到输入正确为止。

 

  • 16
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值