2016-12-17 56 views
-4

所以我的任務是爲我的AP計算機科學課程完成該程序: 編寫需要一個雙精度數組的代碼並移動所有值大於平均值以將數組填充到左側。任何小於未被寫入的平均值的值應被設置爲0.首先計算平均值並將其存儲在名爲平均值的變量中。 示例:陣列[1.0,1.0,3.0 4.0],平均值2.25會被變換爲[3.0,4.0,0.0,0.0]Java:替換數組中的值並移動數組中的元素

public class Array { 

    public static void main(String[] args) { 

    double[] arr = { 
     1.0, 2.0, 3.0, 4.0, 5.0 
    }; 
    double average; 
    double sum = 0.0; 

    for (int i = 0; i < arr.length; i++) 
     sum += arr[i]; 
    average = sum/arr.length; 


    for (int i = 0; i < arr.length; i++) { 

     if (arr[i] >= average) 
     arr[i] = arr[i]; 
     else if (arr[i] < average) { 
     arr[i] = 0.0; 
     arr[i] = arr[i]; 
     for (int t = i + 1; t < arr.length; t++) { 
      if (arr[i] >= average) 
      arr[i] = arr[i]; 
     } 
     } 


    } 
    for (int y = 0; y < arr.length; y++) 
     System.out.println(arr[y]); 
    } 
} 

並且輸出是: 0.0 0.0 3.0 4.0 5.0

我一直在這方面的工作了幾個小時,仍然無法得到需要的結果應該是:3.0 4.0 5.0 0.0 0.0

任何人都知道我做錯了嗎?

+0

你相信什麼'改編[i] =改編[I]'做,爲什麼做你相信它是任何事情在所有?如果你必須將一個值從一個地方移到另一個地方,你不覺得索引需要......你知道.... *不同*? --- *提示:*您需要兩個索引變量。 – Andreas

+0

'arr [i] = arr [i];'? – Danh

+0

分兩步做;設置爲零;改變數值。 – dreamcrash

回答

-1
public class RearrangeArray { 

    public static void main(String[] args) { 
    // TODO Auto-generated method stub 
     double[] arr = {1.0,2.0,3.0,4.0,5.0}; 
     double[] newArr = new double[arr.length]; 

     double sum = 0.0; 
     for (int i = 0; i < arr.length; i++) 
       sum += arr[i]; 
     double average = sum/arr.length; 

     System.out.println("average = " + average); 
     int n = 0; 
     for(int i = 0; i < arr.length; i++) 
     { 
      boolean check = compare(arr[i],average); 
      if(check) 
      { 
       newArr[n] = arr[i]; 
       n++; 
      } 
     } 

     for (int i = 0; i < arr.length; i++) 
     { 
      System.out.print(newArr[i] + " "); 
     } 

    } 
    public static boolean compare(double key, double average) 
    { 
     if(key >= average) 
      return true; 
     return false; 
    } 
} 
+0

這是正確的代碼 –

+0

謝謝你!代碼起作用 –

0

對於第二步使兩個索引:當前索引i和地點的索引來填充j

在每一個i步:如果當前索引處的值是大於平均,將其複製到第j個要素並增加j

我希望用零填充的最後一步,最後j後是很簡單的