2017-11-28 28 views
0

자바의 방법은 이해하기 :캐치 경우 IndexOutOfBoundsException() 누군가가 나를 도울 수 있다면 정말 감사하겠습니다

내가 예외를 catch하고 싶습니다를 할 때 인덱스 테스트 (주 클래스에서) getter 메서드 내 ArrayList에서 바인딩됩니다.

다음과 같이 동작해야합니다. 인덱스 (8을 사용하여 테스트)가 ArrayList (길이가 5)에서 벗어난 경우 프로그램은 값을 가져 오지 않고 Will Skip이라는 문을 출력하고 계속 이동합니다 다음 라인. 인덱스가 범위를 벗어나지 않으면 ArrayList에서 값을 반환합니다.

내가 가지고있는 것은 Catch()에 "반환"값이있는 경우에만 작동합니다. 나는 그것이 getter가 double을 반환 할 것을 요구하고 있기 때문에 그것이라는 것을 안다. 그러나 나는 위에서 언급 한대로 행동하도록이 문제를 어떻게 해결해야할지 모른다. 정말 고맙습니다! 테스트를 위해

메인 드라이버 클래스 :

TestValue object = new TestValue(); 

System.out.println("The value is " + object.getListValue(8)); 

...other methods like print values, set new values etc. 

TestValue 클래스 :

public double getListValue(int index) { 

    try { 
     listValue.get(index); 
     while (index <0 || index >= listValue.size()) { 
     } 
    } 
    catch (IndexOutOfBoundsException e) { 
     System.out.println(e.getMessage()); 
     System.out.println("Can't get value. Will skip this request. "); 
     return listValue.get(0); // I don't want to return any values 
    } 
    return listValue.get(index); 
} 
+1

뭔가를 반환하거나 예외를 throw하는 경우 다른 선택 사항이 없습니다 –

+0

catch하고 건너 뛰려면 드라이버 코드에서 getListValue * 외부 *를 수행해야합니다. – Blorgbeard

답변

0

당신의 방법의 정의 public double, 때문에 이것은 당신이 double하지 않는 한을 반환해야한다 당신은 예외를 던집니다. 정말로 값을 반환하지 않으려면 0.0을 반환 할 수 있습니다.

+0

null은 어떻게 되나요? 나는 "return null;"을 시도했다. in catch(). 그것은 저에게 typemismatch 오류를주었습니다. 감사! – CocoBeans

+0

"double"을 "Double"로 변경하면 null을 반환 할 수 있습니다. –