在 do-while 循环中捕获异常?

客户

有人可以解释并帮助我修复这个程序。

import java.util.*;
import java.io.*;

public class test {

  public static void main(String[] args) {
    Scanner key = new Scanner(System.in);

    boolean clear;
    int in = 0;

    do {
      clear = true;

      try {
        in = key.nextInt();
      } catch (InputMismatchException e) {
        System.out.println("Invalid");
        clear = false;
      }

    } while (clear == false);

    String stringIn = Integer.toString(in);
    String[] dec = stringIn.split("");

    for (int i = 1; i < (dec.length); i++) {
      System.out.print(dec[i] + " ");
    }
  }
}

每当我输入无效输入而不是 int 时,我的程序就会不断循环“无效”,而不是提供为in输入新值的选项

扫地机

问题是,如果扫描器未能找到正确格式的输入,它将抛出异常并且不读取输入

因为扫描器没有读取无效的 int 输入,下一次nextInt被调用时,它会再次尝试读取无效的输入,并惨遭失败,打印另一个“无效!”

因此,如果发现无效的 int,则需要在之后读取输入:

// do this in the catch block:
key.next();

这确保读取下一个令牌。

完整代码:

Scanner key = new Scanner(System.in);

boolean clear;
int in = 0;

do {
    clear = true;

    try {
        in = key.nextInt();
    } catch (InputMismatchException e) {
        System.out.println("Invalid");
        clear = false;
        key.next();
    }

} while (clear == false);

String stringIn = Integer.toString(in);
String[] dec = stringIn.split("");

for (int i = 1; i < (dec.length); i++) {
    System.out.print(dec[i] + " ");
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

do while循环中的异常

来自分类Dev

代码没有在while循环中退出(试图捕获异常)

来自分类Dev

setTimeout在do while循环中

来自分类Dev

在While循环中尝试捕获

来自分类Dev

在while循环中处理异常

来自分类Dev

while循环中的异常行为

来自分类Dev

在while循环中处理异常

来自分类Dev

在 for 循环中的 Do-while 循环

来自分类Dev

在 do-while 循环中使用 JSoup,仍然抛出异常

来自分类Dev

卡在do {} while(false)循环中

来自分类Dev

文件传输卡在do while循环中

来自分类Dev

文件传输卡在do while循环中

来自分类Dev

C程序在do while循环中崩溃

来自分类Dev

在 while 循环中尝试捕获 (python)

来自分类Dev

Java While循环中的VariableDeclaratorID异常

来自分类Dev

!= Null while 循环中的空引用异常

来自分类Dev

Java do-while循环中无尽嵌套的for循环的问题

来自分类Dev

不等于在do while循环中

来自分类Dev

如何在jquery中的do while循环中停止setInterval

来自分类Dev

在do-while循环中使用unsigned int

来自分类Dev

从do while循环中输出不正确的值

来自分类Dev

Do-While循环中的switch语句不会退出

来自分类Dev

在'Do While'循环中的float上复制字符串

来自分类Dev

不等于在do while循环中

来自分类Dev

while循环中“ do”的作用是什么?

来自分类Dev

在do-while循环中使用!false

来自分类Dev

Linux bash代码未在while-do循环中执行

来自分类Dev

卡在链表中的无限 Do-while 循环中

来自分类Dev

在 do while 循环中对 get 请求使用闭包