用java打破for循环的另一种方法?

时间:2013-02-07 05:06:00

标签: java

有没有其他方法可以在不使用实际 中断 语句的情况下打破此循环? 事情是由于某种原因我的教授不喜欢我们在 开关

中的任何其他地方使用休息

我在我的方法中遇到了麻烦,在数组的下一个空白区域中将对象添加到对象数组中

这是我的代码:(任何其他方式吗?)

public void add(Employee employeeObj)throws ArrayIndexOutOfBoundsException{
        try{
            for(int i= 0; i<MAX; i++){
                if(listEmployee[i] == null){
                    listEmployee[i] = employeeObj;
                    break;
                }

            }
        }catch(ArrayIndexOutOfBoundsException e){
            throw new ArrayIndexOutOfBoundsException("ERROR!");
        }
    }

该方法只需要将employeObj添加到数组中,如果是这种情况,则会产生异常。 谢谢你的帮助

5 个答案:

答案 0 :(得分:3)

试试这个:

  for(int i= 0; i<MAX; i++){
    if(listEmployee[i] == null){
        listEmployee[i] = employeeObj;
        i=MAX;
    }

但我发现使用休息时没问题。总是存在你想要停止处理循环的情况,并且使用break;比将循环计数器设置为使循环停止的值更有意义(并使其更具可读性!)下一次迭代。

答案 1 :(得分:2)

如果你没有这么微不足道的情况,你可以简单地做i = MAX或使用布尔标志。

作为个人注意事项,禁止在break switch语句之外使用{{1}}没有任何意义。

答案 2 :(得分:0)

由于您的方法在这种情况下不执行任何其他操作,因此您只需使用return代替break

public void add(Employee employeeObj)throws ArrayIndexOutOfBoundsException {
    try{
        for (int i= 0; i<MAX; i++) {
            if (listEmployee[i] == null) {
                listEmployee[i] = employeeObj;
                return;
            }

        }
    } catch(ArrayIndexOutOfBoundsException e) {
        throw new ArrayIndexOutOfBoundsException("ERROR!");
    }
}

但总的来说,这里的其他答案更适用。也就是说,我会请你的教授解释为什么break不应该被使用 - 恕我直言的替代品往往更不易读。

答案 3 :(得分:0)

  

我在我的方法中遇到了麻烦,在数组的下一个空白区域中将对象添加到对象数组中

我建议简单地找出数组的长度并将对象插入下一个位置。无需迭代完整的arrray长度。

public void add(Employee employeeObj){
           int n = listEmployee.length;
                listEmployee[n] = employeeObj;        
    }
}

答案 4 :(得分:0)

或者你可以这样做

     int i = Arrays.asList(listEmployee).indexOf(null);
     if (i >= 0) {
         listEmployee[i] = employeeObj;
     }

请注意,Arrays.asList会在数组上创建一个视图,而不是新的List