Java数组怎么初始定义不定的长度?

我的程序是这样的,为了去旧数组中的“0”,把它放到新数组中去。。
public class exercise03{ public static void main(String args[]){ int oldarr[]={1,3,5,0,0,6,7,8,0,9,0,5,6}; int newarr[]=null; newarr=new int[newarr.length-1]; /*问题在这里。。请问新的数组长度怎么定义。。现在这样子会报错。。。Exception in thread "main" java.lang.NullPointerException at exercise03.main(exercise03.java:5) */ int x=0; for (int i=0;i<oldarr.length;i++) { if (oldarr[i]!=0) {System.arraycopy(oldarr,i,newarr,x,1); x=x+1;} } System.out.print("int newarr[]={"); for (int j=0;j<newarr.length-1;j++) System.out.print(newarr[j]+","); System.out.print(newarr[newarr.length-1]+"}");
}
}

这个数组int newarr[]=null你是声明为空的肯定会报错啊。有两个方法第一:你先循环遍历int oldarr[]={1,3,5,0,0,6,7,8,0,9,0,5,6}这个数组看它有几个数是零在添加在newarr中。第二:你可以不要用数组做用集合List集合来做方便多了不要考虑数组长度。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-05-16
JAVA没法定义不定长的数组,要么声明为NULL,要么指定其长度。你可以用集合ArrayList来解决这个问题,如果没学过集合,可以先遍历原数组,得到0的个数后,再定义新数组。本回答被网友采纳
第2个回答  2013-04-01
public class exercise03 {
public static void main(String args[]) {
int oldarr[] = { 1, 3, 5, 0, 0, 6, 7, 8, 0, 9, 0, 5, 6 };
int newarr[] = null;
newarr = new int[oldarr.length - 1];
int x = 0;
for (int i = 0; i < oldarr.length; i++) {
if (oldarr[i] != 0) {
System.arraycopy(oldarr, i, newarr, x, 1);
x = x + 1;
}
}
System.out.print("int newarr[]={");
for (int j = 0; j < newarr.length - 1; j++)
System.out.print(newarr[j] + ",");
System.out.print(newarr[newarr.length - 1] + "}");
}
}

第3个回答  2013-04-01
先把你的目录数据放到一个arraylist里,然后再调用 list.toArray就可以转化为数组了。
第4个回答  2013-04-01
给你个思路,你自己定义一个整型数count用for循环 算出有多少个非零的数,这个就是你要开数组的长度,如果要开个不定长度的数组只能用java类集来做了

java中数组在不知道长度的情况下怎么怎么初始化,如果定义n
在Java中,数组的大小一旦初始化便不可更改。因此,如果在不知道具体长度的情况下需要初始化数组,可以通过其他方式实现类似功能。例如,可以先定义一个集合来动态存储数据,然后在需要时将集合转换为数组。这里提供一个具体示例:假设需要收集1到100内所有能被7整除的整数,并将它们打印出来。使用集合实现这...

Java数组怎么初始定义不定的长度?
这个数组int newarr[]=null你是声明为空的肯定会报错啊。有两个方法第一:你先循环遍历int oldarr[]={1,3,5,0,0,6,7,8,0,9,0,5,6}这个数组看它有几个数是零在添加在newarr中。第二:你可以不要用数组做用集合List集合来做方便多了不要考虑数组长度。

java中怎么定义不确定长度的数组
不过,不定参数有两个规定:第一,方法的参数列表中最多只有一个不定长度的参数;第二,就是不定长度的数组的位置必须是最后一个参数。不然不能通过编译。可以,但是有可能会报数组下标越界的错误。建议先判断一下长度,再赋值。还有就是,为什么不用ArrayList呢。用add添加,就不会有越界危险了。如果...

java中可以不指定数组长度的初始化嘛?
数组元素在赋值或使用前必须初始化并指定长度,但是在定义时就初始化的,不能指定大小,比如:int[] sum1={1,2,3};你这道题可以通过编译,但是运行时会报空指针错误: java.lang.NullPointerException

java怎么重新定义int数组长度?
在Java中,数组对象Array的长度是在实例化时就定死了,不能修改。像你这种情况,一般是新建一个数组,重新设置长度,可能的话再将老数组里的值拷贝进去:public class ArrayTest {public static void main(String[] args) {int[] arr1 = { 1, 2, 3, 4, 5 }; \/\/ 初始化一个数组,长度是5...

在JAVA中定义数组时,可不可以一开始不设定数组的长度?
定义时当然可以:例如 int[] a;但是要把它初始化成为一个真正意义上的数组就必须设定长度: int [] a = new int[10]; 这时就只能改变数组里的数值而不能改变它的长度了.Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有...

Java 定义数组
在Java中,数组的定义主要涉及三种方式,分别通过指定长度、不指定长度但需要初始化值以及直接初始化数组。首先,当我们需要一个固定长度的数组时,可以使用以下代码来创建一个包含1024个整数的数组:另一种定义数组的方式是先声明一个空数组,然后后续再设置其长度,例如:对于不预先指定长度的情况,你可以...

JAVA中 如何创建不规定大小的数组?
MyVector.addElement(new Account());上面的语句向向量中添加了一个元素,要初始化多个可以用for循环 for(int i=0;i<n;i++){ MyVector.addElement(new Account());} 这样,你输入多少数据,就创建了多大的向量空间 另外:MyVector.elementAt(int n)返回指定位置的元素,相当于数组中的a[n...

Java中如何定义长度不固定的数组
先定义一个集合,因为集合的长度是不固定的,然后,将集合赋给数组

java数组怎么初始化private int[20] a=???
首先int[] 是数据类型 不能写长度如你写的:int[20],是不对的!!!其次,数组初始化很多种,如我提供的这种 直接new出数组长度并初始化。 第二种 {} 大括号的,这种适合数据量小且知道初始数据的。第三种数据返回型,也就是方法返回初始化数组定义。你编译就错在定义数据类型时不能写长度,要...

相似回答