2015-01-24 5 views
0

아래 코드의 목표는 소수점 이하 두 자리 이상인 입력을 확인한 다음 예외를 throw하는 것입니다. 나는 그것을 올바르게하는 것처럼 느낀다. 나는 소수점을 얻기 위해 indexOf를 사용하려고 시도하고있다. 그리고 나서 그 부분의 길이를 확인하기를 원한다. 2보다 큰 경우 예외가 throw되기를 원합니다. 누구도이 상황에 대한 몇 가지 조언을 갖고 있습니까? 오류 Java에서 프로젝트 확인

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); 
} 

나는 또한 내가 널 입력을 원하는 그나마 나는이 생성자에 오류 검사를 추가 할 수있는 방법을 알고 싶어. 생성자 호출이 생성자에 대한 method.My 코드의 첫 번째 문이 있어야합니다 말한다 오류 검사를 추가하려고 할 때 오류가 발생합니다 : 자바 슈퍼 전에 문을 넣어하는 것을 허용하지 않기 때문에

public ChangeJar(final ChangeJar other){ 
    if(other == null){ 
     throw new IllegalArgumentException("Values cannot be null!"); 
    } 
    this(other.quarters, other.dimes, other.nickels, other.pennies); 
} 



All suggestions are appreciated! 

답변

0

또는 생성자에서 생성자 호출. 따라서 이것을 할 수 없습니다 :

호출중인 생성자에 검사를 추가 할 수 있습니다.

+0

팩토리 클래스 또는 정적 팩토리 메서드를 사용하여 생성자를 보호 할 수도 있습니다. 이를 사용하면 객체를 인스턴스화하기 전에 매개 변수의 유효성을 검사 할 수 있습니다. –

+0

매개 변수가 정수이기 때문에 호출 된 생성자에 검사를 추가하는 방법을 모르겠습니다. – FunTK