2013-11-19 4 views
0

Я не понимаю, почему я получаю такую ​​ценность. Этот метод напрямую зависит от массива и двух других. Все они заполнены схожим количеством шагов, однако способ их заполнения различен. Некоторые идут сверху вниз, а остальные идут от нуля. Я могу уточнить, если это не имеет смысла.Почему мой метод дает мне нулевое значение?

Значение альфа-диапазона было заполнено сверху вниз, в то время как оно зависело от другого массива 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 ]); 

    } 
} 
+0

* Я могу разработать больше, если это не имеет смысла * - Пожалуйста. Я ничего не мог понять. – SudoRahul

+0

Был ли образец непонятным или моим объяснением? – handroski

+0

Какой метод дает значение null? И где именно он дает нуль? Из-за этого вы получаете какие-то исключения? – SudoRahul

ответ

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

здесь itrrho[k] является не inintialized поэтому каждый элемент 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 
} 

затем посмотреть результат

+0

hmm Что именно вы подразумеваете под инициализацией? Другой для циклов, которые у меня есть в этом коде, выполняется аналогичным образом. – handroski

+0

, когда вы создаете двойной массив, тогда вам нужно что-то поместить в него, иначе каждый элемент будет по умолчанию 0.0. и вы умножаете свой результат на itrrho [k], который уже имеет 0.0, поэтому ваш результат равен 0.0 –

+0

Я вижу. Im prety уверен, что я сделал это с этой строкой, itrrho = новый double [shells + 1]; – handroski

0

Вам нужно создать экземпляр класса или иначе массив обыкновение быть заселен.

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)); 
    } 
} 
Смежные вопросы