有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么我的方法给我空值?

我不明白为什么我会得到这样的价值。该方法直接依赖于一个数组,间接依赖于另两个数组。它们都用相似数量的步骤填充,但填充方法各不相同。一些从顶部到零,而另一些从零开始。如果这不合理,我可以详细说明

alpha值是自上而下填充的,而它依赖于另一个数组,tat是自下而上填充的。允许吗

blic class ItrDensityGrid {

public double itrrho [ ];           // defines an a array of adjusted densities

double b = InitialConditions.bmod;  

// Iterating grid of adjusted densities 

public ItrDensityGrid ( int shells , double radius , double mass , double bmod ) {      // Density constructor with inputs

    GravityGrid gg = new GravityGrid ( shells , radius , mass , bmod );             // Pulls gravity array for use, will change each iteration  

    itrrho = new double [ shells + 1 ];                                         // Defines number of elements in array as shells with steps of 1

    for( int k = shells ; k >= 1 ; k -- ){                                  // for loop fills array from top shell down

    itrrho[ k ] = ( itrrho [ k ] * ( 1 + ( gg . alpha [ k ] * ( 1.0 / 2 )))*( 1 / ( 1 - (( gg.alpha[ k ]) * ( 1.0 / 2 )))));   // defines elements form top down

        System.out.println("The adjusted density at shell " + k + " is " + itrrho[k]);

        }
    }

public double itrrho( int k ){

    return( itrrho[ k ] );

    }
}

共 (2) 个答案

  1. # 1 楼答案

    您需要实例化该类,否则将无法填充该数组

    public class TestItrDensityGrid{
        public static void main(String[] args){
            ItrDensityGrid grid = new ItrDensityGrid ( 5 , 10.0 , 10.0 , 5.0 );
    
            System.out.println(grid.itrrho( 5 ));
        }
    }
    
  2. # 2 楼答案

    itrrho[ k ] = ( itrrho [ k ] *  ( 1 + ( gg . alpha [ k ] * ( 1.0 / 2 )))*( 1 / ( 1 - (( gg.alpha[ k ]) * ( 1.0 / 2 ))))););
    

    这里itrrho[k]非非限定的,因此itrrho的每个元素都是0.0

    所以itrrho [ k ] * ( 1 + ( gg . alpha [ k ] * ( 1.0 / 2 )))*( 1 / ( 1 - (( gg.alpha[ k ]) * ( 1.0 / 2 )))))

    将是0.0 * ( 1 + ( gg . alpha [ k ] * ( 1.0 / 2 )))*( 1 / ( 1 - (( gg.alpha[ k ]) * ( 1.0 / 2 )))))

    因此你得到了0.0

    new double[shels+1];之后做类似的事情

    for(int i=0;i<itrrho.length;i++){
        itrrho[i]=1.0; //initialization
    }
    

    然后看看结果