2016-12-17 37 views
-4

私はAPコンピュータサイエンスクラスのこのプログラムを完了することになっています: 2倍の配列をとり、配列を左に塗りつぶすための平均より大きい値。上書きされていない平均より小さい値は0に設定する必要があります。まず、平均を計算してaverageという名前の変数に格納します。 例:配列[1.0、1.0、3.0 4.0]、平均値は[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]); 
    } 
} 

に2.25転換されるであろうし、出力は次のとおり 0.0 0.0 3.0 4.0 5.0

私は数時間のためにこれに取り組んできた、まだあるべき所望の出力を得ることができません:3.0 4.0 5.0 0.0 0.0

誰もが私が間違ってやっているか知っていますか?第二段階のために

+0

十分に簡単であることを願っていますが、 'ARR信じて何をすべきか[I] = ARR [i]は'行い、そしてなぜj

をインクリメントあなたはそれが何かを信じているまったく?値をある場所から別の場所に移動する必要がある場合は、索引が必要であるとは思わないでください。 --- *ヒント:* 2つのインデックス変数が必要です。 – Andreas

+0

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

+0

これを2段階で実行します。ゼロに設定します。値をシフトします。 – 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

2つのインデックス作成:現在のインデックスi、すべてのiステップj

を埋めるための場所のインデックスを:j番目の要素にコピーし、現在のインデックスの値は、平均よりも大きい場合そして、私は最後のj後にゼロフィリングとの最後のステップは

関連する問題