一个关于java数组的问题。

 public class D {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        int [] array=new int[2000];
        int l=0;
        int k=1;
        for(int i=1;i<=2000;i++){
            if(i%400==0||(i%4==0&&i%100!=0)){
                array[l++]=i;
            }
        }
        for(;k<array.length;k++){
            System.out.println(array[k]);
        }
    }
}

为什么打印的数组里全是0呢?

用动态数组就好了

import java.util.ArrayList;
public class Test {
    public static void main(String [] args){
        ArrayList<Integer> list = new ArrayList<Integer>();
        for(int i=1;i<=2000;i++){
            if(i%400==0||(i%4==0&&i%100!=0)){
                list.add(i);//符合条件添加到动态数组
            }
        }
        for(int k=0;k<list.size();k++){
            System.out.println(list.get(k));//输出整个数组
        }
    }
}

你的数组太长了,闰年一共400多个,你打印了2000个数据,后面的1500多个都是0.

这个是计算闰年的方法吧。并不是全部都是0.我编译过,前面输出的是闰年的数值没错。但是后面一堆全是0.这是因为最后的时候,数组的前500个左右是有数值的,但是后1500个全是0.

稍微改动一下:

 //闰年计算:四年一闰;百年不闰, 四百年再闰
public class ArrayTest {

    public static void main(String[] args) {

        int [] array=new int[2000];//2000个数
        int l=0;
        //int k=1;
        for(int i=1;i<=2000;i++){
            if(i%400==0||(i%4==0&&i%100!=0)){//被400整除,被四整除且不被100整除
                l++;//数组元素位置加1
                array[l]=i;
            }
        }
        for(int k=1;k<array.length/4;k++){
            System.out.println(array[k]);
        }

    }

}

感觉刚才发的有问题,再发一下。

 //闰年计算:四年一闰;百年不闰, 四百年再闰
public class ArrayTest {

    public static void main(String[] args) {

        int [] array=new int[2000];//2000个数
        int l=0;
        //int k=1;k没必要在这里定义
        for(int i=1;i<=2000;i++){
            if(i%400==0||(i%4==0&&i%100!=0)){//被400整除,被四整除且不被100整除
                array[l++]=i;
            }
        }
        for(int k=0;k<array.length/4;k++){//数组下标k从0开始,只输出前500个数
            System.out.println(array[k]);
        }

    }

}

用动态数组就好了
import java.util.ArrayList;

public class Test {
public static void main(String [] args){
ArrayList list = new ArrayList();
for(int i=1;i<=2000;i++){
if(i%400==0||(i%4==0&&i%100!=0)){
list.add(i);//符合条件添加到动态数组
}
}
for(int k=0;k<list.size();k++){
System.out.println(list.get(k));//输出整个数组
}
}
}

既然l记录了闰年的总数,那么输出的时候也应该使用l控制输出循环。

 for(;k<l;k++){
            System.out.println(array[k]);
        }

这样就不会有0出现了