问题描述
- 一个关于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