2014-12-03 1 views
-1
public double accessor(int n) 
{ 
    switch(n) 
    { 
    case 0: 
     return this.a; 
     break; 
    case 1: 
     return this.b; 
     break; 
    case 2: 
     return this.c; 
     break; 
    case 3: 
     return this.d; 
     break; 
    case 4: 
     return this.e; 
     break; 
    } 
} 

a,b,c,d,e은 모두 double 유형이지만 break 문은 도달 할 수 없으며 double 유형을 반환해야합니다. 나는 java에 그렇게 새로운 것을 바란다. 바보 같으면메서드는 double을 반환해야하지만 오류가 발생합니다.

+2

그리고 n이 위의 값 중 어느 하나도 아니면? 기본 블록이 없으며 자바가 불평 할 권리가 있습니다. 또한 return 문은 메서드를 끝내기 때문에 return 문 뒤에 break를 사용할 필요가 없습니다. –

+2

'accessor (5)'는 무엇을 반환합니까? – immibis

+0

이 실제 사용법을 알고 싶습니다 ... 캡슐화 된 값의 시퀀스를 노출하는 스위치를 사용하면 인덱스 범위 검사가있는 컬렉션이 누락 된 것처럼 보입니다. 더 많은 가치에 맞게 확장 될 것입니다. –

답변

5

n가 0-4의 범위에 없다면 어떻게 될까? 그 어떤 경우도없고 관련이없는 return 성명이 있습니다.

default 케이스에 값을 반환하거나 (해당 값이 유효한 경우) IllegalArgumentException을 던져 잘못된 값을 갖습니다.

또한 break; 문을 포함하는 것이 일반적으로 좋은 방법이지만 도달 할 수없는 문이므로 올바르지 않습니다. switchcasereturn 문은 break만큼 양호합니다. 왜냐하면 다음 사례로 넘어가는 것을 방지하기 때문입니다.

+0

또한'return' 다음에'break'가 "break 문에 도달 할 수 없다"라는 그의 첫 번째 문제입니다. – mkobit

+0

@MikeKobit Correct; 나는 그것에 가고 있었다! – rgettman

0

return으로 전화하면 아무 것도 부를 수 없습니다. 각 return 다음에 break을 삭제하고 default: 사례를 작성하십시오.

관련 문제