一个关于java数组的问题。

问题描述

一个关于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));//输出整个数组
        }
    }
}

解决方案二:

java中返回一个数组
Java_输入一个数组

解决方案三:

这个是计算闰年的方法吧。并不是全部都是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));//输出整个数组
}
}
}

解决方案七:

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

解决方案八:

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

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

这样就不会有0出现了

时间: 2024-09-21 11:14:07

一个关于java数组的问题。的相关文章

关于Java 数组内存分配一点认识

 可能Java 数组大家都很熟悉,最近我遇到了一个关于Java 数组内存分配的问题.         呵呵.突然就发现许多书上"基本数据类型存储在栈内存当中,对象则保存在堆内存"这句话完全是错误的.下面是个简单的例子代码: public class Test { public static void main(String[] argv) { // 静态初始化数组 String[] names = { "Michael", "Orson", &q

基于Java 数组内存分配的相关问题_java

可能Java 数组大家都很熟悉,最近我遇到了一个关于Java 数组内存分配的问题.呵呵.突然就发现许多书上"基本数据类型存储在栈内存当中,对象则保存在堆内存"这句话完全是错误的.下面是个简单的例子代码: 复制代码 代码如下: public class Test {    public static void main(String[] argv) {// 静态初始化数组String[] names = { "Michael", "Orson",

在java中定义了一个二维数组,这样做好像不对,输出时报错, 代码如下

问题描述 在java中定义了一个二维数组,这样做好像不对,输出时报错, 代码如下 我是想要定义一个二维数组,然后动态地给它赋值,应该怎么做不知道问题出在做么地方,请大神指导一下 ,代码如下: int[][] a = null; a[1] = new int[]{1,2,3}; System.out.println(a[1][1]); 解决方案 int[][] a = null; a = new int[5][];//第一维需要初始化 a[1] = new int[]{1,2,3};//这是第二维

关于java数组定义一个函数清除该数组的重复元素,返回一个不能浪费长度的数组.

问题描述 关于java数组定义一个函数清除该数组的重复元素,返回一个不能浪费长度的数组. package cn.xtgj.testarr; /** 目前有数组" int[] arr = {11,2, 4, 2, 10, 11},定义一个函数清除该数组的重复元素,返回一个不能浪费长度的数组. * */ public class Arr { public void method(int[] arr){ int count=0; for(int i=0;i<arr.length;i++){ fo

java 命名-一个二维数组常量命名该怎么命名,不能是大写吧。

问题描述 一个二维数组常量命名该怎么命名,不能是大写吧. java的数组常量命名约定.======================================= 解决方案 用final 来定义 解决方案二: 命名规范http://wenku.baidu.com/link?url=lXm9BPBbZvU_ELi0c-MwajASixWSWT_H62owk4lp3DDeUUdxJ-GYp-oTobOJRn0XO-2L-mkiKkkaLXmR_mV_Yc-ByOsJ1Ja4yaeeU5nMn__

java数组-一个数组可以看成一个类吗,数组当中的每一个元素可以看成一个对象吗

问题描述 一个数组可以看成一个类吗,数组当中的每一个元素可以看成一个对象吗 一个数组可以看成一个类吗,数组当中的每一个元素可以看成一个对象吗 解决方案 数组是一种数据类型,数组中的每个元素类型取决于它的声明是什么类型,例如:String[],里面只能存放String类型的数据.Student[],里面只能存放Student类型的数据. 解决方案二: 数组是一个容器 ,你可是在里面放类 ,但它不是一个类 解决方案三: 不能,虽然数组里可以放很多东西,但它不是一个类.数组,就是相同数据类型的元素按一

关于java数组的深度思考

数组 刚刚开始接触java数组的人都会听到一句类似的话:java是纯面向对象的语言,他的数组也是一个对象.于是乎,笔者就按照一个对象的方式来使用数组,心安理得.直到我接触到C的数组后,才发现将数组作为一个类来使用在实现上是多么的"不自然". 首先我们看一下表面现象,数组创建的时候采用的是如下语句: MyClass[] arr = new MyClass[9]; 而普通类采用的是如下语句: MyClass obj = new MyClass(); 就是说,创建数组的时候不使用小括号传参.

新手入门:Java数组特点及基本使用技巧

技巧|数组 1.关于数组的特点 1)在Java中,无论使用数组或容器,都有边界检查.如果越界操作就会得到一个RuntimeException异常. 2)数组只能保存特定类型.数组可以保存基本类型,容器则不能.容器不以具体的类型来处理对象,它们将所有对象都按Object类型处理. 3)容器类只能保存对象的引用.而数组既可以创建为直接保存基本类型,也可以保存对象的引用.在容器中可以使用包装类,如Integer.Double等来实现保存基本数据类型值. 4)对象数组和基本类型数组在使用上几乎是相同的:

JAVA数组和JAV集合类的操作

集合|数组 如果你做过很多java程序,你可能对java集合类很熟悉,例如:Vector和ArrayList.你可以创建一个集合并向其中增加元素: List lst = new ArrayList(); lst.add(new Integer(37)); 在这个特殊的范例中,一个整型值37用于构造一个Integer封装类对象,然后那个对象被加入到列表. 这个简单的范例展示集合的一个基础-他们用于操纵一列对象,其中的每个对象是一个类或者接口类型.因此,一个ArrayList可以包含Object,S