如何验证用户的输入是双精度还是整数?

时间:2015-10-21 23:21:33

标签: java

我正在编写一个程序来识别一个数字是否是一个完美的正方形。显然,完美正方形的因素必须是整数。所以我想知道什么是识别用户输入的 sqrt (通过Scanner)是integer还是double的最佳方法。< / p>

提前感谢。

2 个答案:

答案 0 :(得分:0)

我假设您的代码包含以下语句:

      Scanner userIn = new Scanner(System.in);
    //userIn.next() somewhere in your code, which is what you want to test

您可以使用以下方法(将userIn.next()作为参数传递):

        public boolean isDouble(String userInput){
               if(userInput.contains(".")){
                     return true;
               }
               else{
                    return false;
               }
        }

此代码基本上检查userInput字符串是否包含小数点,如果是,则输入为double,否则为false,您还可以添加初步条件以确保userInput是数字而不是其他任何内容。

编辑: 正如Klitos Kyriacou在评论中正确指出的那样,我的答案最初没有回答所提出的问题,但是OP很满意......为了完整起见,我将特别回答这个问题: < / p>

静态类Math中的sqrt方法返回一个double,因此使用上面的测试将不起作用,因为Math.sqrt(25)将返回5.0。

要解决这个问题,可以简单地将sqrt的返回值的舍入值与sqrt方法的实际返回值进行比较。

您可以使用以下方法(如上面的情况,userIn.next(),将是方法的参数):

 public boolean isPerfectSquare(String userInput){
        if(Math.sqrt(Double.parseDouble(userInput)) == Math.round(Math.sqrt(Double.parseDouble(userInput)))){
            return true;
        }
        return false;
    }

答案 1 :(得分:0)

计算平方根并将其与自身进行比较转换为整数,如果数字可能很大,则将结果与Math.floor()进行比较。

相关问题