在for循环中循环混淆,初始值为零&这是条件

时间:2013-05-11 05:49:12

标签: java for-loop conditional-statements

在这个程序中,我对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,循环如何执行!

我正在为这个问题撕掉我的头发。

1 个答案:

答案 0 :(得分:1)

如果用户为变量for输入小于或等于-1的值,location循环将仅执行

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

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

我建议将循环改为递增而不是递减,并将lastItem初始化为0,这样就可以使该代码有效而不会出错。