有没有其他方法可以在不使用实际 中断 语句的情况下打破此循环? 事情是由于某种原因我的教授不喜欢我们在 开关
中的任何其他地方使用休息我在我的方法中遇到了麻烦,在数组的下一个空白区域中将对象添加到对象数组中
这是我的代码:(任何其他方式吗?)
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添加到数组中,如果是这种情况,则会产生异常。 谢谢你的帮助
答案 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