善良的牙膏 2020-05-09 18:35 采纳率: 0%
浏览 445

关于catch里面套一个try catch的问题

Scanner语句没有执行直接报错的问题

我怀疑是这个trycatch语句的问题代码如下:

System.out.print("|验证码["+arr[index]+"]:");
        try {
        code=s.nextInt();
        } catch(InputMismatchException ie) {
            index++;
            System.out.println("|   请输入数字!");
            System.out.print("|验证码["+arr[index]+"]:");
            code=s.nextInt();

        }

运行结果:

|验证码[1234]:ljklj
|   请输入数字!
Exception in thread "main" |验证码[4562]:java.util.InputMismatchException
    at java.base/java.util.Scanner.throwFor(Scanner.java:939)
    at java.base/java.util.Scanner.next(Scanner.java:1594)
    at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
    at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
    at Login.BookUtils.createUser(BookUtils.java:86)
    at Login.BookUtils.main(BookUtils.java:23)

这个在我第一次给code赋值的时候为了防止输入时报出这个数据类型不一致异常所以我就给他处理了,但是当我想在catch语句中直接进行第二次录入的时候这个catch语句中的code=s.nextInt();没有运行而且还报出了和上面我要处理的一样的异常,没有运行code=s.nextInt();我应该就没有录入值,没有经过判断直接就报错了,这是为什么,求大佬帮助

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-09-25 13:23
    关注

    code=s.nextInt();
    这里还有异常,估计是缓冲区还有换行,导致int没有读

    评论

报告相同问题?

悬赏问题

  • ¥15 有偿求苍穹外卖环境配置
  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,