我正在嘗試編寫一個程序,該程序在執行時將通過一個數組並刪除所有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