当我执行此代码时,它会告诉我:
"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);
}
}
答案 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函数。