在这个程序中,我对for循环如何在List
方法中的InsertItem()
类中执行感到困惑。
public class List {
int[] a;
int lastItem;
public List() {
a = new int[10];
lastItem = -1;
}
public void InsertItem(int newItem, int location) {
int i;
for (i = lastItem; i >= location; i--) {
a[i + 1] = a[i];
}
a[location] = newItem;
lastItem++;
}
我的困惑:在InsertItem方法的for循环中,lastItem被初始化为-1。假设位置为1,如果1小于0,循环如何执行!
我正在为这个问题撕掉我的头发。
答案 0 :(得分:1)
如果用户为变量for
输入小于或等于-1
的值,location
循环将仅执行 。
但是为location
分配负值将导致a[location] = newItem;
和a[i + 1] = a[i];
出错,因为您将超出数组a[]
的边界。
如果您的目标是用值填充数组,则功能循环逻辑将被破坏。
我建议将循环改为递增而不是递减,并将lastItem
初始化为0
,这样就可以使该代码有效而不会出错。