如何将double转换为double数组?

时间:2016-07-19 21:10:01

标签: arrays double

当我执行此代码时,它会告诉我:

"incompatible: double cannot be converted to double[]"

我该怎么做才能修复它?

public class Gravity
{
   public static double[] calcGravity(double[] radius, double[] mass)
   {
      // The formula to calculate gravity is: g = (G*M)/r^2
      for(int i = 0; i < 9; i++)
      {
         return 6.67E-17 * mass[i] / Math.pow(radius[i], 2); //incompatible error
      }

   public static void main(String[] args) throws IOException
   {
      // Initialize variables
      string[] names = {"Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune", "Pluto"};
      double[] radii = {2439.7, 6051.9, 6378, 3402.5, 71492, 60270, 25562, 24774, 1195};
      double [] masses = {3.30E23, 4.87E24, 5.97E24, 6.42E23, 1.90E27, 5.68E26, 8.68E25, 1.02E26, 1.27E22}; 

      // Processing
      double[] gravities = calcGravity(radii, masses);

      // Output
      printResults(names, radii, masses, gravities);
      printToFile(gravities);
    }
}

2 个答案:

答案 0 :(得分:1)

我对Java没有任何新鲜感,但是你的编译错误正在告诉你它究竟是什么样的。您正在尝试将double转换为double数组。

查看你的函数calcGravity,你得到的结果是:

6.67E-17 * mass [i] / Math.pow(radius [i],2);

现在,问题是这个。你在for循环中使用了一个return语句,它将返回一个double值。

我认为你打算做的是为你在calcGravity中尝试进行的9次计算中的每一次计算。因此,您需要做的是创建一个您需要的任何大小的数组,运行for循环并设置每个值,然后返回数组,而不是单个计算值。

public static double[] calcGravity(double[] radius, double[] mass)
{
    // The formula to calculate gravity is: g = (G*M)/r^2
    double[] array = new double[9]; 

    for(int i = 0; i < 9; i++)
    {
        array[i] =  6.67E-17 * mass[i]/ Math.pow(radius[i],2);              //incompatible error
    }

    return array;
}

不确定这是否是用于创建数组的有效Java语法,但我认为你明白了。

答案 1 :(得分:0)

一个函数只能在一次调用中返回一个值。 一旦它返回一个值,控件就会返回到调用函数。但是在您的代码中,您尝试返回多个值,即每次迭代后的重力值。我建议你修改你的功能如下:

public static void main(String[] args)throws IOException
{
// Initialize variables
String[] names = {"Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune", "Pluto"};
double[] radii = {2439.7, 6051.9, 6378, 3402.5, 71492, 60270, 25562, 24774, 1195};
double [] masses = {3.30E23, 4.87E24, 5.97E24, 6.42E23, 1.90E27, 5.68E26, 8.68E25, 1.02E26, 1.27E22}; 
double gravities[]=new Double[9];
for(int i=0, i<9; i++)
{
   gravities[i] = calcGravity(radii[i] , masses[i] );
}
}
public static double calcGravity(double radius, double mass)
{
// The formula to calculate gravity is: g = (G*M)/r^2

for(int i = 0; i < 9; i++)
{
    return 6.67E-17 * mass/ Math.pow(radius,2);             
}
}//end of calcGravity

你也忘了关闭calcGravity函数。