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 ] );
}
}
# 1 楼答案
您需要实例化该类,否则将无法填充该数组
# 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];
之后做类似的事情然后看看结果