我有一个填充数组的方法,我需要找到一种让它重复多次的方法。目的是迭代并重申行星的密度,以缩小其在同心壳体的特定点处的质量,重力和密度。这是我的第一个课程,但是,我认为在学习这个课程的过程中,我学到了不少。谢谢大家
这是密度计算的代码示例。我可能包括太多但是哦。所以我需要选择多次迭代。需要将每次迭代重新放回到质量计算中,然后将其重新计算到重力计算中。然后节目再次开始。
public class ItrDensityGrid {
public double itrrho[];
double b = InitialConditions.bmod;
// Iterating grid of densities
public ItrDensityGrid(int shells, double radius, double mass){
GravityGrid gg = new GravityGrid(shells, radius, mass);
for(int k = shells; k >= 0; k--){
itrrho[k] = (itrrho[k]*(1+(gg.alpha[k]*(1.0 / 2)))*(1 / (1-((gg.alpha[k])*(1.0 / 2)))));
}
}
}
答案 0 :(得分:1)
这可以通过Recursion或循环来实现。
在递归中,您可以从方法本身内部再次调用该方法。确保有条件地调用(或返回),否则,它可能导致无限循环!
以下是带有递归的示例:
public planetMars (double density, double mass) {
// do your calculations
density = density / 10.05312;
mass = mass / 7.2378;
myArray[] = density; // or whatever you want
// if calculations have not narrowed enough, call recursively
if ( density > 5.2)
planetMars (density, mass);
}
或者, with loop ,您可以执行以下操作:
public planetMars (double density, double mass) {
// loop unless the calculation is not cool
while ( density > 5.2) {
// do your calculations
density = density / 10.05312;
mass = mass / 7.2378;
myArray[] = density; // or whatever you want
}
}
答案 1 :(得分:0)
你可以创建一个函数来检查你的计算公差是否已经足够好了,这里有一些“伪代码”
while(toleranceIsGood(planet) == false)
{
planet = calculatePlanet(planet);
}
planet将是阵列。当然,你可以实现像无限循环检测等的东西