猿问

输入验证检查输入是否为双精度

我想检查我输入的输入是否是正确的数据类型。例如,如果用户int在我希望他们输入时输入 a,double那么程序会告诉他们有错误。这是我到目前为止所拥有的:


System.out.println("Enter the temperature in double:");

String temp = input.nextLine();

try

{

    Double temperature = Double.parseDouble(temp);

}

catch(Exception e)

{

    isValid = false;

    System.out.println("Temperature  must be a double ");

}

它所做的一切都是通过程序继续进行,而不是在我输入int. 一直坚持这一点,所以任何帮助将不胜感激。


拉丁的传说
浏览 129回答 2
2回答

开满天机

我认为您正在寻找仅验证十进制数字(不包括整数)。如果是这种情况,那么您可以使用正则表达式:System.out.println("Enter the temperature in double:");String temp = input.nextLine();while (temp != null && !temp.matches("^[0-9]*\\.([0-9]+)+$")) {       // use of regex here    System.out.println("Enter the temperature in double:");    temp = input.nextLine();                                          // read input again}这将循环直到用户只输入有效的十进制输入。这个 正则表达式的解释。

凤凰求蛊

由于您不想int被接受,您可以添加一个if来检查输入String是否有小数点。    System.out.println("Enter the temperature in double:");    String temp = (new Scanner(System.in)).next();    if (temp.contains(".")) {        try {            Double temperature = Double.parseDouble(temp);        } catch(Exception e) {            isValid = false;            System.out.println("Temperature  must be a double ");        }    } else {        isValid = false;        System.out.println("Temperature  must be a double ");    }
随时随地看视频慕课网APP

相关分类

Java
我要回答