注册 登录
编程论坛 JAVA论坛

新手!求帮忙看下报错代码!

张半夏 发布于 2016-12-19 23:44, 1191 次点击
程序代码:
package zs1;

public class zs17
{
        static int[] data={2,5,7,3,8,9,4,};
        static int index=8;
        static void insert(int pos,int value)
        {
            if (index==data.length) expand();
            for(int i=index;i>pos;i--)
            {
                data[i]=data[i-1];
            }
            data[pos]=value;
            index++;
        }
        static void delete(int pos)
        {
            index--;
            for(int i=pos;i<index;i++)
            {
                data[i]=data[i+1];
            }
        }
        static void expand()
        {
            int[] a=new int[data.length*2];
            System.arraycopy(data,0,a,0,data.length);
            data=a;
        }
        static void print()
        {
            for(int i=0;i<index;i++)
            {
                System.out.print(data[i]+"");
            }
            System.out.println();
        }
        public static void main(System[] args)
        {
            insert(2,1);
            print();
            delete(1);
            print();
        }
}





我不知道是哪里错了,运行却一直报错!
4 回复
#2
GrayJerry2016-12-20 13:12
你打印下最初的data数组,就知道了,data数组中只有7个数字,所以insert方法中的data[7]会报错
#3
枫xby2016-12-24 22:21
你定义了data数组 static int[] data={2,5,7,3,8,9,4,}; 这里有问题 我怀疑你少了数字
#4
枫xby2016-12-24 22:30
数组下标是从0开始的,你的数组长度是7 但你执行insert方法中 for的第一次循环  data[i]=data[i-1];  ==》 data[8] = data[7] 所以有问题
#5
root_lord2016-12-26 11:16
main方法参数类型错误,数组角标越界
1