急!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呢?

急!JAVA中如何实现将数组的部分值赋给另一个数组?
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].intValu...

JAVA里怎么把这个数组赋值给另一个数组
有两种方法 第一种用for循环:int[] x={1,2};int[] y=new int[2];for(int i=0;i<x.length;i++){y[i]=x[i];第二种用java提供的arraycopy int[] x={1,2};int[] y=new int[2];System.arraycopy(x, 0, y, 0, x.length);\/\/变量依次是(原数组,从原数组第几位开始,...

Java怎样把一个字符串数组的元素附给另一个字符串数组
1 使用循环结构 这种方法最灵活。唯一不足的地方可能就是代码较多 2 使用Object类的clone()方法, 这种方法最简单,得到原数组的一个副本。灵活形也最差。效率最差,尤其是在数组元素很大或者复制对象数组时。3 使用Systems的arraycopy这种方法被告之速度最快,并且灵活性也较好,可以指定原数组名称、以...

java数组去除几个元素怎么赋值给另一个数组,
数组的赋值可以用地址赋值,如果原来的数组已经把某几个元素删除了,直接就可以把原来地址给新的数组,如果你需要在赋值过程中删除元素,可能就需要进行数组遍历

java怎么把一个数组的值循环赋值给另外一个大数组
需要使用一个临时数组将原有数组进行扩展,然后再将原数组和添加的数组一起放到新的数组中就可以了。

java里怎样把一个数组赋值给另一个数组
int []a = new int[]{1,2,3,4,5,6,7,8} ;A-> int []b = a ;B-> int []b = new int[a.length] ;for(int i = 0 ; i< a.length; i++){ b[i] = a[i] ;}

Java怎样把一个字符串数组的元素附给另一个字符串数组
java.lang.System类的arrayCopy();public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。从 src 引用的源数组到 dest 引用的目标数组,数组组件的一个子序列被复制下来。被复制的组件...

JAVA中从一个数组中提取数据,插入到另一个数组的方法是什么?
思路1:就是把你想要打印 的 偶数 和 基数 数组元素取出来,分别放到 两个 新数组 里面。然后打印这两个新数组。思路2:直接用循环通过下标分别打印。int[] a = new int[10];\/\/原始数组,我就不赋值了,就用自动初始的值 \/\/打印下标为基数的 for(int i=0;i<a.length;i += 2){ Sys...

Java 遍历数组怎样把便利后的值赋到另一个数组
1.这种情况你应该用完整的for循环for (int i = 0; i < beanStrs.length; i++){ str[i] = beanStrs[i];}2.还有一种方法就是直接赋值不遍历str = beanStrs;3.如果你一定要用自己这种需要在循环外定义一个int变量,每次赋值后在加1 ...

java 中如何把一个string数组原封不动的赋给另外一个string数组[]
{ public static void main(String args[]){ String s1[]={"1","2","3","4","5","6"};String s2[]=new String[6];System.arraycopy(s1,1,s2,2,4);for(int i=0;i

相似回答