java.util.Scanner : why my nextDouble() does not prompt?

标签 java java.util.scanner

import java.util.*;

public class June16{
    public static void main(String[] args){
        Scanner kb = new Scanner(System.in);
        double b=0;
           boolean checkInput = true;
        do{
            try{
                System.out.println("Input b : ");
                b = kb.nextDouble();
                checkInput = false;
            }catch(InputMismatchException ime){
            }
        }while(checkInput);
    }
}

抛出InputMismatchException后,为什么我的程序不提示输入? :D

最佳答案

来自documentation :

When a scanner throws an InputMismatchException, the scanner will not pass the token that caused the exception, so that it may be retrieved or skipped via some other method.

这就是为什么如果您不输入有效的 double ,您最终会陷入无限循环。处理异常时,使用 kb.next() 移至下一个标记。

关于java.util.Scanner : why my nextDouble() does not prompt?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6374623/

相关文章:

带有空子句的 Java 三元运算符

java - 在 Java 中处理文件

java - 在文本文件中查找字符串。然后得到以下行并需要按索引和子字符串分割

java - Java 中有没有办法找出扫描仪跳过的字符串?

java扫描仪多重验证

java - java.util.Stack 或 java.util.Queue 有什么线程安全问题

java - Java 中有没有办法找到传递给函数的变量的名称?

java - 替换来自 Android WebView 的外部 javascript 文件中的函数调用

java - 扫描仪示例循环

java - 如果我重新实例化扫描仪,旧扫描仪会关闭吗?