我写的代码是这样的
public class jiohuanshuju {
  public static void main(String []args){
   int[] oldArray={1,2,3,4,5,6,7,8,9,0,14,0,15,17,16,0};
   int[] newArray={};
   for(int i=0;i<oldArray.length;i++){
   int j=0;
   if(oldArray[i]!=0){
   newArray[j]=oldArray[i];
   j++;
   }
   }
   int  a=newArray.length;
   System.out.print("newArray={"+"\t");
   for(int c=0;c<=a;c++){
   System.out.print(newArray[c]+","+"\t");
   }
   System.out.print("}");
  }
}结果  提示 如下错误
数组下标越界

解决方案 »

  1.   


    public class jiohuanshuju {
    public static void main(String[] args) {
    int[] oldArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 14, 0, 15, 17, 16, 0 };
    //int[] newArray = {};
    //System.out.println(newArray.length);
    //在这里打印数组的长度,是0,所以下面当j大于0时就会越界了,所以上面的代码可以改成
    int[] newArray = new int[oldArray.length];

    int j = 0;//这句应该放在循环外面,否则每次都是从0开始的
    for (int i = 0; i < oldArray.length; i++) {

    if (oldArray[i] != 0) {
    newArray[j] = oldArray[i];
    j++;
    }
    }
    int a = newArray.length;
    System.out.print("newArray={" + "\t");
    //还有这里c应该是小于a,即newArray.length,数组的小标是从0开始到n-1的。
    //for (int c = 0; c <= a; c++) {
    for (int c = 0; c < a; c++) {
    //在这里判断一下,输出不为0的元素
    if(newArray[c] != 0) {
    System.out.print(newArray[c] + "," + "\t");
    }
    }
    System.out.print("}");
    }
    }
      

  2.   

    提醒你注意结贴给分
    public class Jiohuanshuju {
        public static void main(String []args){
            int[] oldArray={1,2,3,4,5,6,7,8,9,0,14,0,15,17,16,0};
            int[] newArray={11,12,13};        int[] tempAry=new int[newArray.length];
            for(int i=0;i<newArray.length;i++){
                 tempAry[i]=newArray[i];
            }
            newArray=new int[oldArray.length];
            for(int i=0;i<oldArray.length;i++){
    ////            int j=0;
    //            if(oldArray[i]!=0){
    //                newArray[j]=oldArray[i];
    //                j++;
    //            }
                newArray[i]=oldArray[i];
            }
    //        int  a=tempAry.length;
    //        System.out.print("newArray={"+"\t");
            oldArray=new int[tempAry.length];
            for(int i=0;i<tempAry.length;i++){
                oldArray[i]=tempAry[i];
    //            System.out.print(newArray[i]+","+"\t");
            }
    //        System.out.print("}");
            System.out.print("old array:");
            for(int i:oldArray){
                System.out.print(i+",");
            }
            System.out.println();
            System.out.print("new array:");
            for(int i:newArray){
                System.out.print(i+","); 
            }
        }
    }
      

  3.   

    我也是个初学者,(*^__^*) 嘻嘻…… 有什么可以加我QQ:2420800783 可以讨论一下
    我觉得有两个地方有问题
    1.int[] newArray={};这个地方没有定义它的长度
    2.for(int c=0;c<=a;c++){ 这个地方应该是c<a是 c<=a 的话就越界了