我正在尝试编写一个程序,该程序在执行时将通过一个数组并删除所有0.0的实例,并将该数组的大小改为等于非零元素的数量,并将这些元素以先前的顺序排列。即,如果n = 10和[J]中的内容,j = 0到N - 1最初是Java从数组中删除零
0.0, 1.2, 0.0, 0.0, 0.0, 2.3, 0.0, 9.7, 5.6, 0.0
则代码执行后的内容应该是
n=4, a[0]=1.2, a[1]=2.3, a[2]=9.7, and a[3]=5.6.
这是我到目前为止:
import java.util.Scanner;
public class hw2
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
final double KEY = 0.0;
int n = scan.nextInt();
double[] a = new double[n];
for(int i=0; i<n; i++)
{
a[i] = scan.nextDouble();
}
for(int k = 0; k<n; k++)
{
if(a[k] == KEY)
{
a[k] = a[k+1];
n--;
}
System.out.println(a[k]);
}
}
}
只是在正确的方向微调,将不胜感激。
*咳嗽*考虑ArrayList *咳嗽*虽然在这种情况下,如果它是“0”,您可以简单*不保存* , 也许。 (除非添加,否则不要增加“已使用的数组变量”,因此您知道多少包含“非0”数据或将迭代期间遇到的第一个“0”视为“有用数据结束” - 数组是) – 2010-11-23 02:19:16
那么它的基础是,如果已经有一个名为a的数组具有double值,并且您必须运行一段代码片段,该代码片段将穿过已填充的数组并删除所有0.0的实例保持其他数字的顺序不变。 – Mike 2010-11-23 02:22:33