在Java中检查项目时出错
我在下面代码中的目标是检查输入长度是否超过小数点后两位,然后抛出异常。不过,我似乎不能把它弄对。我试图使用indexOf来获取小数点,然后我想检查它后面部分的长度。如果它大于2,我希望它抛出异常。有没有人能为这种情况提供一些建议在Java中检查项目时出错,java,error-checking,Java,Error Checking,我在下面代码中的目标是检查输入长度是否超过小数点后两位,然后抛出异常。不过,我似乎不能把它弄对。我试图使用indexOf来获取小数点,然后我想检查它后面部分的长度。如果它大于2,我希望它抛出异常。有没有人能为这种情况提供一些建议 public ChangeJar(final String amount) { int i = amount.indexOf('.'); String temp = amount.substring(i + 2); if(temp.lengt
public ChangeJar(final String amount) {
int i = amount.indexOf('.');
String temp = amount.substring(i + 2);
if(temp.length() > 2 ){
throw new IllegalArgumentException("Too many decimal places!");
}
if (amount == null || Double.parseDouble(amount) < 0) {
throw new IllegalArgumentException("amount cannot be null!");
}
double amt;
try {
amt = Double.parseDouble(amount);
} catch (NumberFormatException ex) {
throw new IllegalArgumentException("Invalid entry. Format is 0.00.");
}
amountHelper(amt);
}
因为Java不允许在构造函数中的super或构造函数调用之前放置任何语句。因此,您不能这样做:
public ChangeJar(final ChangeJar other){
if(other == null){
throw new IllegalArgumentException("Values cannot be null!");
}
this(other.quarters, other.dimes, other.nickels, other.pennies);
}
您可以在正在调用的构造函数中添加检查。您还可以使用工厂类或静态工厂方法,并使构造函数受到保护。我不知道如何将检查添加到被调用的构造函数中,因为它的参数是整数。
public ChangeJar(final ChangeJar other){
if(other == null){
throw new IllegalArgumentException("Values cannot be null!");
}
this(other.quarters, other.dimes, other.nickels, other.pennies);
}