2013-11-26 21 views
0

我正在嘗試使用體積陣列和均勻密度計算連續層的行星質量。音量從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]); 

     } 

    } 

回答

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]); 

    } 
+0

比我的更好的方法:) – anon

+0

優秀。我會嘗試兩種方法。對不起,我還不能投票 – handroski

+0

感謝您的幫助好先生 – handroski

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索引位置處沒有質量元素

+0

使用此。謝謝。 – handroski

+0

@Alejandro:不客氣。 – anon