操纵循环

时间:2013-11-26 09:18:26

标签: arrays for-loop

我正在尝试使用体积阵列和均匀密度来计算行星质量的连续层。音量从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]);

        }

    }

2 个答案:

答案 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索引位置没有质量元素。