2017-01-01 9 views
-3

maxとminとintervalを指定してdouble型の配列を作成する必要があります。だから、配列には、私はゼロの配列を取得しています{など...、2.9、4.9、6.9}数字の範囲から配列を作成する

を以下のようになります。

public class FoolinAround { 
    public static void main(String[] args) { 
     double min = 2.9; 
     double max = 20.6; 
     double gap = 2.0; 
     double count = (max - min)/gap + 2; // as will need first and last 
               // element also 

     double array[] = new double[(int) count]; 
     for (int j = 0; j < array.length; j++) { 
      double i = array[j]; 
      min = min + gap; 

     } 
     for (double k : array) { 
      System.out.print(array[(int) k] + ","); 
     } 

    } 
} 
+4

いいえあなたは 'array [j] = something'がありません。配列要素に何も割り当てなければ、配列に何が埋め込まれると思いますか? –

+3

注意:これは 'double i = array [j];'は何もしません。ローカルの二重変数 'i'を作成し、この同じローカル変数に0を代入します(これはすべての配列が保持するため)。そして、同じローカル変数を破棄します。 –

+0

私はこの配列が完了するときに保持する必要があるかどうかは不明です。例を挙げてください。 – weston

答えて

1

あなたの配列(array[j] = something;)に割り当てられていないようです。あなたのexplantationからは、arrayに結果が含まれていると思われます。あなたが解決しようとしている問題を理解すれば、これは解決策のように見えます。

public class FoolinAround { 
    public static void main(String[] args) { 
     double min = 2.9; 
     double max = 20.6; 
     double gap = 2.5; 
     double count = (max - min)/gap + 2; // as will need first and last 
               // element also 

     double array[] = new double[(int) count]; 
     for (int j = 0; j < array.length; j++) { 
      array[j] = min + (j*gap); 
     } 
     for (double k : array) { 
      System.out.print(array[(int) k] + ","); 
     } 

    } 
} 

私は、この計算は、あなたの配列のためにあなたに正しいサイズを与えることを確認しませんでした:double count = (max - min)/gap + 2;。この計算を検証することをお勧めします。丸めではなく、切り捨てに頼っているので、1つ1つのエラーが発生することがあります。ここで

+0

ありがとう、私はコーディングにまったく新しいです。それを見つけたはずです。ちょうどポストのクリスマスの精神的なブロックがある。ありがとうございました! – Harry

1

は、私が見つけた

double[] array = DoubleStream.iterate(min, prev -> prev + gap) 
          .limit(count) 
          .toArray(); 

Link to DoubleStream

+0

@mangotang良い点。ありがとうございました – Dummy

+0

ダミー、ありがとう、それはプロジェクトのため、私はパッケージやライブラリを使用することはできませんし、基本的なJavaを使用する必要がありますが、本当にあなたの応答に感謝します。 – Harry

+2

情報ありがとうございます。 Btw、あなたが質問をするときに、あなたの要求をリストアップすることを忘れないでください。助けてくれる人があなたに良い答えを与えることを知っています – Dummy

0

問題は割り当てとのために、各ループであったかです。ここにあなたがそれを行う方法があります:

double min = 2.9; 
    double max = 20.6; 
    double gap = 2.0; 
    double count = (max - min)/gap + 2.0; 

    System.out.println(count); 
    double array[] = new double[(int) count]; 
    for (int j = 0; j < array.length; j++) { 

     // double i = array[j]; /*Not sure why this assignment is used 
     // here?*/ 
     array[j] = min; 
     min += gap; 

    } 

    for (double k : array) { 
     System.out.print(k + "\n"); // Here k is the double value from the 
            // array. array[(int)k] will give you 
            // element of array indexed at the 
            // element of array. 
    } 
+0

ありがとうNimit、これはとても役に立ちました! – Harry

関連する問題