我正在尝试使用体积阵列和均匀密度来计算行星质量的连续层。音量从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]);
}
}
答案 0 :(得分:1)
为什么不把第一个计算放在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]);
}
答案 1 :(得分:0)
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]);
}
是的,您可以在第一次循环时忽略添加。因为-1索引位置没有质量元素。