0

(9) の数値の配列を平方根にして出力しようとしていますが、1 つの結果 (配列内の数値の 2 乗) だけが返されますが、これは明らかに私が望んでいるものではありません。助けてくれてありがとう。わかりました、これまでのところ私のひどいコードです。メソッドにも渡そうとしています。

public static void main ( String args[] )
{ 
 double[] nums  = {126, 12.939, 795, 320.16,
             110, 34.7676, 7773, 67, 567, 323};

System.out.println ("Square root is " +square);
square(nums);
} 

public static double square (double [] array) {
double result;
for( double i = 0; i < array.length ; i++ )
  result = Math.sqrt(array[i]);

return result;
 }
}
4

3 に答える 3

5

平方根を格納する変数は 1 つしかないresultため、上書きされ、最終的には最新の平方根のみが含まれます。配列内の各要素の平方根が必要な場合は、結果も配列に格納する必要があります。

public static double[] square (double [] array) {
  double[] result = new double[array.length];
  for(int i = 0; i < array.length ; i++ )
    result[i] = Math.sqrt(array[i]);

  return result;
}

次に、たとえば次のように、結果を 1 つずつ印刷できます。

public static void main ( String args[] )
{ 
  double[] nums  = {126, 12.939, 795, 320.16,
             110, 34.7676, 7773, 67, 567, 323};
  double[] squares = square(nums);

  for(int i = 0; i < nums.length ; i++ )
    System.out.println ("Square root of " + nums[i] + " is " + squares[i]);
}

更新:私のマシンでの結果は、予想どおり、次のとおりです。

Square root of 126.0 is 11.224972160321824
Square root of 12.939 is 3.597082150855051
Square root of 795.0 is 28.19574435974337
Square root of 320.16 is 17.893015397076034
Square root of 110.0 is 10.488088481701515
Square root of 34.7676 is 5.896405684821898
Square root of 7773.0 is 88.16461875378354
Square root of 67.0 is 8.18535277187245
Square root of 567.0 is 23.811761799581316
Square root of 323.0 is 17.97220075561143
于 2010-05-31T19:50:42.420 に答える
1

配列内のすべての要素の平方根を出力したい場合は、同じ方法で繰り返し結果を出力する必要があります。何かのようなもの:

for (int i = 0 ;i < array.length; i++)
{
    System.out.println("The Square Root of " + array[i] + " is" + Math.sqrt(array[i]));
}

実行方法は次のとおりです。配列内の各数値について、その平方根を見つけて変数 result に格納します。すべての配列をループしたら、result の値を返します。この場合は、最後に処理した数値の平方根になります。

于 2010-05-31T19:58:24.510 に答える
1

言われたことに加えて...答えを印刷した後に関数を呼び出しているようです。あなたもそれを支えてください。

于 2010-05-31T19:59:37.587 に答える