用递归删除数组中的零元素,但是不会写递归函数

11、从键盘读入n个整数放入数组中,编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素向数组首端移动。注意,CompactIntegers函数需... 11、 从键盘读入n个整数放入数组中,编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素向数组首端移动。注意,CompactIntegers函数需要接受数组及其元素个数作为参数,函数返回值应为删除操作执行后数组的新元素个数。输出删除后数组中元素的个数并依次输出数组元素。  样例输入: (输入格式说明:5为输入数据的个数,3 4 0 0 2 是以空格隔开的5个整数)
  5
  3 4 0 0 2
  样例输出:(输出格式说明:3为非零数据的个数,3 4 2 是以空格隔开的3个非零整数)

这是我自己的编的程序,但在递归那一块有问题,哪位大神帮我改一下。
import java.util.Scanner;

public class wenti11_ {

public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int a[]=new int[n];
for(int i=0;i<n;i++)
{
a[i]=sc.nextInt();
}
int result=CompactIntegers(n,a);
System.out.println(result);
for(int s=0;s<result;s++)
{
System.out.print(a[s]+" ");
}

}
public static int CompactIntegers(int n,int[] a)
{
for(int j=0;j<n;j++)
{
if(a[j]==0)
{
for(int m=j;m<n-1;m++)
{
a[m]=a[m+1];
}
n--;
}
}

for(int s=0;s<n;s++)
{
if(a[s]==0)
{
CompactIntegers(n,a);

}

}

return n;

}
}
展开
 我来答
匿名用户
2015-03-06
展开全部


import java.util.Scanner;

public class YuGiOh
{
public static int CompactIntegers ( int[] a, int n )
{
for ( int i = 0; i < n; i++ )
{
if (a[i] == 0)
{
int[] tmp = new int[a.length - 1];
System.arraycopy (a, 0, tmp, 0, i);
System.arraycopy (a, i + 1, tmp, i, tmp.length - i);
a = tmp;
return CompactIntegers (a, a.length);
}
}
System.out.println ("样例输出:");
System.out.println (n);
for ( int i = 0; i < n; i++ )
{
System.out.print (a[i] + " ");
}
return n;
}

public static void main ( String[] args )
{
System.out.println ("样例输入: ");
Scanner sc = new Scanner (System.in);
int n = sc.nextInt ();
int a[] = new int[n];
for ( int i = 0; i < n; i++ )
{
a[i] = sc.nextInt ();
}
sc.close ();
CompactIntegers (a, n);
}
}
readlnh
2015-03-06 · 超过59用户采纳过TA的回答
知道答主
回答量:206
采纳率:0%
帮助的人:79.9万
展开全部
原谅我只会c和pascal
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式