从for循环中返回true并停止循环

9

我是新手Java。 我一直在尝试做一些事情,但没有成功。 基本上,我想做的就是创建一个返回true或false的方法。该方法获取一些参数,检查某个数组是否已满,如果没有,则将参数推送到第一个不为空的单元格中,并返回true而不继续检查其余的数组。 如果数组已满,就只返回false。 这是代码:

public boolean add( param1, param2, param3 ){
 for( int i = 0; i < array.length; i++ ){
   if ( array[i] == null ){
     array[i] =  new SomeObject( param1, param2, param3 ); 
     return true;
     break;
     }
  }
  return false;
}

但是我得到了错误消息- "unreachable statement",针对于 "break;"。 有什么帮助吗?
提前致谢!
3个回答

22

由于你有一个返回语句,所以你不需要从循环中break,因为返回语句会结束方法的执行。只需删除break语句即可。


1
非常感谢您的评论。基本上,每当在方法内部出现return语句时,它都会结束执行,即使return语句位于3个嵌套循环内部,也是如此。 - Avishay28
3
是的,return语句总是会结束当前方法并返回结果。 - Peter Lawrey

2

由于一些人坚持函数必须只有一个返回点,因此该函数可以重新表述如下,以满足原始问题的明显期望。

public boolean add( param1, param2, param3 ){
    boolean result = false;
    for( int i = 0; i < array.length; i++ ){
        if ( array[i] == null ){
            array[i] =  new SomeObject( param1, param2, param3 ); 
            result = true;
            break;
        }
    }
    return result;
}

一个合理的方法,尽管将 Result 大写是与惯例不符的突兀之处。 - Erick G. Hagstrom
为什么要创建另一个变量?它如何比原始代码更好(当然,没有break语句的情况下)? - Avishay28
感谢您的评论,我已将其小写以使其更具社会主义色彩。 - Codor
@Avishay28 从某种客观意义上来说,并不是“更好的选择”;然而,在我看来,原帖作者的直觉似乎是返回语句并没有立即终止函数。 - Codor

0
是的,因为一旦控制遇到一个返回语句,它就会退出方法、开关或循环等。所以在返回语句下面编写的任何代码都将是“不可访问的”。因此,最好将返回语句放在块(方法)的末尾,除非需要,在单个块中不建议在 return 语句之后编写任何代码,否则可能会出现错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接