以下代码尝试通过日志记录捕获empity double input无法正常工作。我还想检查用户是否错误地在输入字段中添加了一个字符串(但我在编写查询时遇到问题)。有人可以看看这个并指导我。
try {
if (results1 != 00.00) {
throw new Exception("Data must be added");
}
}
catch (Exception e) {
log.error("You have an error", e);
}
用户必须输入results1的值,因为它用于计算。结果1是一个双倍,因为它是一个百分比,我愿意将它改为一个int,如果这就是使其工作所需要的。如果用户意外添加了%符号,我还想检查try和catch技术。我希望我的记录器能够捕获NumberFormatException以进行测试。
我认为这可能是问题所在:
(results1 != 00.00)
这是检查双精度输入是否为空的最佳方法。另外我如何检查是否添加了字符串?
答案 0 :(得分:1)
将'=='或'!='用于double,浮点数并不是一个好主意。您可以与非常小的数字进行比较,而不是等号('==')。
Math.abs(result1) > 0.001
答案 1 :(得分:1)
Java具有Double.parseDouble(string)函数,如果无法将字符串转换为double,则会抛出NumberFormatException。
// EDIT
结合prashant回答,这是一个完整的实现。
try {
Double result = Double.parseDouble(string);
//This is required to check that number is a valid Percentage value
if(!(result > 0 && result < 100)){
//You will have to create this custom exception or throw a simple exception
throw new InvalidPercentageCustomException(result + " is not a valid Percentage");
}
}
catch(Exception e){
//Do Something
}
答案 2 :(得分:1)
据我所知,您想检查用户输入(字符串)是否为有效百分比。
您可以像这样使用parseDouble:
try{
Double result = Double.parseDouble(results);
//This is required to check that number is a valid Percentage value
if(result <= 0.0 || result >= 100.0){
//You will have to create this custom exception or throw a simple exception
throw new InvalidPercentageCustomException("Not a valid Percentage");
}
}
catch(Exception e){
//Do Something
}
还有一条建议:您不应该只是为了让您的程序有效而更改您的数据类型。
答案 3 :(得分:1)
这是你必须检查NumberFormatException的方法。下面的程序有三个例子。第一个是成功场景,第二个是带有parse异常的空String,第三个是带有parse异常的String
package com.stackoverflow.test;
public class ParseCheck {
public static void main(String args[]) {
String results1 = "123.56";
String results2 = "";
String results3 = "xyz";
try {
Double.parseDouble(results1);
System.out.println(results1 + " parsed successfully");
} catch (NumberFormatException e) {
e.printStackTrace();
}
try {
Double.parseDouble(results2);
System.out.println(results2 + "parsed successfully");
} catch (NumberFormatException e) {
e.printStackTrace();
}
try {
Double.parseDouble(results3);
System.out.println(results3 + "parsed successfully");
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
}