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

2024-11-29 08:03:11
推荐回答(3个)
回答1:

看了下楼主你的代码,我感觉你没有实现将重复数存入另一数组的功能,而且有的地方很不符合实际,比如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 System.out.print(arr[i].intValue()+" ");
}
}
//返回重复数和0
public Integer[] getArray(int[] array){
//存放重复的数和0
ArrayList list = new ArrayList();
//将List保存的数据存入Integer数组里
Integer[] temp = null;
for(int i=0,n=array.length;i//第二个for循环用于检查array[i]是否与之后的数相同,如果相同就存入list
for(int j=i+1;jtemp = 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;jif(i == array[j].intValue()){
return true;
}
}
return false;
}
}
}

用你提供的数据可以输出“4 5 0 6 7”,并且对任意整型数组都可以实现功能,这是完整的类,你可以复制到IDE里去测试一下。

回答2:

你的程序并没有实现所说的:“数组A重复的数和0都赋给B数组,然后将B数组输出”这个功能。不过也看不明白是什么意思,是只复制重复的数?还是只要有一个以上的数字就复制,但是只留一个在B中?0复制几个?为什么要">0&&<=7”?

回答3:

没有仔细研究LZ的代码,不过最后一个for循环肯定是报数组越界的错误,i1