0

在这个程序中,我对 for 循环如何在这个ListClass inInsertItem()方法中执行感到困惑。

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++;
    }

我的困惑:lastItem 在 InsertItem 方法的 for 循环中初始化为 -1。假设位置为1,如果i小于,循环将如何执行0

我正在为这个问题而烦恼。

4

1 回答 1

1

只有当用户为变量输入小于或等于的值时,for循环才会执行。-1location

但是分配负值location将导致a[location] = newItem; &处的错误,a[i + 1] = a[i];因为您将超出数组的边界a[]

如果您的目标是用值填充数组,则函数循环逻辑被破坏。

我建议将循环反转为增量而不是减量,并初始化lastItem为,0以便您可以使此代码有效而没有错误。

于 2020-04-28T18:32:44.313 回答