【发布时间】:2010-11-23 02:17:46
【问题描述】:
我正在尝试编写一个程序,该程序在执行时将通过一个数组并删除 0.0 的所有实例并将数组的大小更改为等于非零元素的数量并将这些元素按之前的顺序放置.即如果n=10且a[j]的内容,j=0到n-1的初始值为
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]);
}
}
}
只要稍微推动一下正确的方向,我们将不胜感激。
【问题讨论】:
-
cough 考虑 ArrayList cough 虽然在这种情况下,如果它是“0”,您可以简单地不保存该值, 也许。 (也不要增加“使用的数组变量”,除非您添加,这样您就知道有多少包含“非 0”数据或将迭代期间遇到的第一个“0”视为“有用数据的结尾”——数组是使用类型的默认值初始化。)
-
好吧,它基于是否已经有一个名为 a 的数组具有双值,并且您必须运行一个代码 sn-p 它将遍历已填充的数组并删除 0.0 的所有实例,同时保持其他数字按相同顺序排列。