2014-12-03 66 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如此原諒如果這聽起來很愚蠢該方法必須返回一個雙精度型,但出現錯誤

+2

而且,如果n不是上述任何一項,該怎麼辦?你沒有默認塊,Java是正確的抱怨。因爲return語句結束了方法,所以在return語句之後也不需要中斷。 – 2014-12-03 00:25:38

+2

'accessor(5)'返回什麼? – immibis 2014-12-03 00:26:27

+0

我會有興趣知道你的實際使用這個...使用開關來公開一個封裝值序列看起來像你只是缺少一個索引邊界檢查集合。它並不像它能很好地擴展到更多的價值。 – 2014-12-03 08:10:01

回答

5

如果n不在0-4的範圍內呢?沒有這種情況,並且沒有相關的return聲明。

有一個default的情況,要麼返回一個值(如果該值有效),要麼由於它是一個無效值而引發IllegalArgumentException

此外,儘管包括break;聲明通常是一種很好的做法,但在這裏是不正確的,因爲它們是無法訪問的聲明。 switchcase中的return聲明與此處的break一樣好,因爲它還可以防止「落入」下一個案例。

+0

另外,'return'後面的'break'是他關於「break語句無法到達」的第一個問題 – mkobit 2014-12-03 00:27:53

+0

@MikeKobit正確;我正在接近! – rgettman 2014-12-03 00:29:29

0

撥打電話return後,您不能撥打任何內容。在每個return之後刪除de break,並且還製作default:的情況下,

相關問題