急!JAVA中如何实现将数组的部分值赋给另一个数组?

package array;
public class array{
public static void main(String [] args)
{
int array[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
int[] array1=new int[10];
int n=0,m=0,i=0;
while (i<array.length)
{
if ((array[i]>0)&&(array[i]<=7))
{
n+=1;
if(n>1)
{
array1[m]=array[i-1];//将重复的数赋给另外的数组
m++;
}
}
else if(array[i]==0)
{
array1[m]=array[i];//将0赋给另一个数组
m++;
}
i++;
}
for (int i1=0;i1<array.length;i1++)
System.out.println(array1[i1]+",");//另一个数组输出
}

}

程序可以通过编译,但运行时出现异常:
java.lang.ArrayIndexOutOfBoundsException
这样的,数组A重复的数和0都赋给B数组,然后将B数组输出
程序可以通过编译,但运行时出现异常:
java.lang.ArrayIndexOutOfBoundsException
谁能帮我解决这个问题啊,感激不尽!

看了下楼主你的代码,我感觉你没有实现将重复数存入另一数组的功能,而且有的地方很不符合实际,比如if ((array[i]>0)&&(array[i]<=7)) 就限定了数组里的数必须是大于0小于等于7,相当于限定死了数组,一点都不具有通用性。我自己给你写了下,基本上满足了你的要求:
public class ArrayTest {
public static void main(String[] args) {
ArrayTest at = new ArrayTest();
int[] array = {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
Integer[] arr = at.getArray(array);
for(int i=0,n=arr.length;i<n;i++){
System.out.print(arr[i].intValue()+" ");
}
}
//返回重复数和0
public Integer[] getArray(int[] array){
//存放重复的数和0
ArrayList<Integer> list = new ArrayList<Integer>();
//将List保存的数据存入Integer数组里
Integer[] temp = null;
for(int i=0,n=array.length;i<n-1;i++){
//第二个for循环用于检查array[i]是否与之后的数相同,如果相同就存入list
for(int j=i+1;j<n;j++){
temp = new Integer[list.size()];
//如果数组当前位置array[i]的数为0并且list里没有保存它时,将0存入list
if(array[i]==0&&!inArray(array[i],list.toArray(temp))){
list.add(array[i]);
}else{
if(array[i]==array[j]&&!inArray(array[i],list.toArray(temp))){
list.add(array[i]);
}
}
}
}
temp = new Integer[list.size()];
return list.toArray(temp);
}
//检测指定的数是否之前已经被保存过
private boolean inArray(int i,Integer[] array){
if(array.length == 0||array == null){
return false;
}else{
for(int j=0,k=array.length;j<k;j++){
if(i == array[j].intValue()){
return true;
}
}
return false;
}
}
}

用你提供的数据可以输出“4 5 0 6 7”,并且对任意整型数组都可以实现功能,这是完整的类,你可以复制到IDE里去测试一下。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-10
你的程序并没有实现所说的:“数组A重复的数和0都赋给B数组,然后将B数组输出”这个功能。不过也看不明白是什么意思,是只复制重复的数?还是只要有一个以上的数字就复制,但是只留一个在B中?0复制几个?为什么要">0&&<=7”?
第2个回答  2012-09-10
没有仔细研究LZ的代码,不过最后一个for循环肯定是报数组越界的错误,i1<array.length指明的是array的大小,这大小超过了array1的大小了,是不是少写了个1呢?