Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java静态方法与数组计算_Java_Arrays_Methods_Static - Fatal编程技术网

java静态方法与数组计算

java静态方法与数组计算,java,arrays,methods,static,Java,Arrays,Methods,Static,我试图为我的程序计算和显示数组,但它一直在说,你不能将double转换为double[],例如,在我的代码中,当我计算表面重力时,它说我不能将数组和变量混合,因为我声明万有引力常数是一个变量,方程中的所有东西都是一个数组。另一个是,当我通过将直径数组除以2来计算半径,并将半径变量作为用于计算表面重力的静态方法中的参数传递时,编译器说double不能转换为double[],因为在用于表面重力的静态方法中,我将半径声明为数组。任何帮助都将不胜感激。下面是我的代码: public class Grav

我试图为我的程序计算和显示数组,但它一直在说,你不能将double转换为double[],例如,在我的代码中,当我计算表面重力时,它说我不能将数组和变量混合,因为我声明万有引力常数是一个变量,方程中的所有东西都是一个数组。另一个是,当我通过将直径数组除以2来计算半径,并将半径变量作为用于计算表面重力的静态方法中的参数传递时,编译器说double不能转换为double[],因为在用于表面重力的静态方法中,我将半径声明为数组。任何帮助都将不胜感激。下面是我的代码:

public class GravityV1{

// calculate surface gravity static method
public static double surfaceGravity(double G, double[] M, double[] r){

    // equation for surface gravity
    double[] g = (G * M) / Math.pow(r, 2);

    // return statement
    return g;
}

// displaying static method
public static void display(String[] planets, double[] radius, double[] 
        mass, double[] g){

    // display output
    System.out.printf("%n", planets, radius, mass, g);
}

// write results to text file static method


public static void main(String args[]){

    // declare array for months
    String[] Planets = new String[8];

    // initialize array
    Planets [0] = "Mercury";
    Planets [1] = "Venus";
    Planets [2] = "Earth";
    Planets [3] = "Mars";
    Planets [4] = "Jupiter";
    Planets [5] = "Saturn";
    Planets [6] = "Uranus";
    Planets [7] = "Neptune";

    // declare array for mass
    double[] mass = new double[8];

    // initialize array
    mass [0] = 3.30E23;
    mass [1] = 4.869E24;
    mass [2] = 5.97E24;
    mass [3] = 6.4219E23;
    mass [4] = 1.900E27;
    mass [5] = 5.68E26;
    mass [6] = 8.683E25;
    mass [7] = 1.0247E26;

    // declare array for diameter
    double[] diameter = new double[8];

    // initialize array
    diameter [0] = 4880;
    diameter [1] = 12103.6;
    diameter [2] = 12756;
    diameter [3] = 6794;
    diameter [4] = 142984;
    diameter [5] = 120536;
    diameter [6] = 51118;
    diameter [7] = 49532;

    // // convert to radius

    // declare radius variable
    double radius;

    // for each loop for displaying
    for(double calc : diameter){

        // calculation for converting to radius
        radius =  calc / 2;
    }

    // // calculate surface gravity

    // declare and initialize universal gravity constant;
    double G = 6.67384 * Math.pow(10, -11);

    // call surface gravity method
    surfaceGravity(G, mass, radius);
}
}

是的,不能将标量与数组混合使用。您需要重写此方法:

public static double[] surfaceGravity(double G, double[] M, double[] r){

    double[] g = new double[M.length];
    // equation for surface gravity
    for (int i=0; i < g.length; i++) {
        g[i] = (G * M[i]) / Math.pow(r[i], 2);
    }

    // return statement
    return g;
}
公共静态双[]表面完整性(双G,双M,双r){
double[]g=新的双精度[M.长度];
//地面重力方程
对于(int i=0;i
您应该逐个计算双数组中的元素

改变

// calculate surface gravity static method
public static double surfaceGravity(double G, double[] M, double[] r){

    // equation for surface gravity
    double[] g = (G * M) / Math.pow(r, 2);

    // return statement
    return g;
}

//计算地面重力静态法
公共静态双[]表面间隙(双G,双[]M,双[]r){
//地面重力方程
double[]g=新的双精度[M.长度];

对于(int i=0;i完成其他答案,您应该建立一个半径数组(因为
surfaceGravity
需要
double[]
作为其第三个参数):

double[]半径=新的double[diameter.length];
//用于显示的每个循环
对于(int i=0;i
// calculate surface gravity static method
public static double[] surfaceGravity(double G, double[] M, double[] r){

    // equation for surface gravity
    double[] g = new double[M.length];

    for(int i=0;i<g.length;i++)
    {
        g[i] = (G * M[i]) / Math.pow(r[i], 2);
    }

    // return statement
    return g;
}
double[] radius = new double[diameter.length];

// for each loop for displaying
for(int i = 0; i < diameter.length; i++) { 

    // calculation for converting to radius
    radius[i] =  calc / 2;
}