2014-12-03 67 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:的情况下,

相关问题