我正在编写一个程序来识别一个数字是否是一个完美的正方形。显然,完美正方形的因素必须是整数。所以我想知道什么是识别用户输入的 sqrt (通过Scanner
)是integer
还是double
的最佳方法。< / p>
提前感谢。
答案 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()
进行比较。