Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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
Arrays 操纵循环_Arrays_For Loop - Fatal编程技术网

Arrays 操纵循环

Arrays 操纵循环,arrays,for-loop,Arrays,For Loop,我试图用体积数组和均匀密度来计算行星质量的连续层。体积从0开始,这将给出中心和第一个壳之间的体积。所以我需要计算从那里开始的质量,然后从那里开始计算每一层的质量。我遇到的问题是,我需要在这之前加上计算出的质量,以得到总质量(即+imass[k-1]起作用的地方)。我希望最终得到表面上的行星总质量。我能在第一个for循环中忽略这个加法,因为它不在那里吗 public class MassGrids { public double imass[]; // Initial mas

我试图用体积数组和均匀密度来计算行星质量的连续层。体积从0开始,这将给出中心和第一个壳之间的体积。所以我需要计算从那里开始的质量,然后从那里开始计算每一层的质量。我遇到的问题是,我需要在这之前加上计算出的质量,以得到总质量(即+imass[k-1]起作用的地方)。我希望最终得到表面上的行星总质量。我能在第一个for循环中忽略这个加法,因为它不在那里吗

public class MassGrids { 

    public double imass[];

    // Initial mass with uniform density

    public MassGrids ( int shells , double radius , double mass ){           // constructor for mass grids 


        VolGrid vg = new VolGrid ( shells, radius );                    // calls volume to be used 

        IntlDensity rho = new IntlDensity ( mass, radius );         // calls INITIAL Density

        imass = new double [ shells ] ;                     // Fills mass array with number of elements, shells

        for ( int k = 0 ; k <= shells - 1 ; k++ ){              // For loop will define each element in array

            imass[ k ] = ( vg.vol[k] * rho.irho ( mass, radius ) + imass [ k - 1 ]) ;

            System.out.println(imass[k]);

        }

    }
公共类MassGrids{
公共双imass[];
//均匀密度初始质量
公共体量轴网(int壳、双半径、双质量){//体量轴网的构造函数
VolGrid vg=newvolgrid(shell,radius);//调用要使用的卷
IntlDensity rho=新的IntlDensity(质量、半径);//调用初始密度
imass=new double[shells];//用元素数、壳数填充体量数组

for(int k=0;k为什么不将第一个计算放在for循环之外?就像这样

    imass[ 0 ] = ( vg.vol[0] * rho.irho ( mass, radius )) ;        
        for ( int k = 1 ; k <= shells - 1 ; k++ ){              // For loop will define each element in array

        imass[ k ] = ( vg.vol[k] * rho.irho ( mass, radius ) + imass [ k - 1 ]) ;

        System.out.println(imass[k]);

    }
imass[0]=(体积[0]*rho.irho(质量、半径));
for(int k=1;k
for(int k=0;k 0)
imass[k]=(体积[k]*rho.irho(质量、半径)+imass[k-1]);
其他的
imass[k]=vg.vol[k]*rho.irho(质量、半径);
System.out.println(imass[k]);
}

是的,您可以忽略第一个循环中的加法。因为在-1索引位置没有质量元素。

比我的更好的方法:)非常好。我将尝试两种方法。很抱歉,我无法向上投票。谢谢。
for ( int k = 0 ; k <= shells - 1 ; k++ ){              // For loop will define each element in array
            if(k>0)
            imass[ k ] = ( vg.vol[k] * rho.irho ( mass, radius ) + imass [ k - 1 ]) ;
            else
            imass[ k ] = vg.vol[k] * rho.irho ( mass, radius );               

            System.out.println(imass[k]);

        }