【发布时间】:2014-09-22 03:21:13
【问题描述】:
我遇到了增加 4 个嵌套 while 循环的问题。假设您有一个 double 类型的数组,以及许多整数来增加循环。这是一个例子
private static double[] approxOfU(double w, double x, double y, double z,
double u) {
double a = 0, b = 0, c = 0, d = 0;
final double[] powerArray = { -5.0, -4.0, -3.0, -2.0, -1, (-1.0 / 2.0),
(-1.0 / 3.0), (-1.0 / 4.0), 0, (1.0 / 4.0), (1.0 / 3.0),
(1.0 / 2.0), 1, 2, 3, 4, 5 };
double[] temp = new double[5];
double approx;
int i = 0, j = 0, k = 0, l = 0;
while (i < powerArray.length) {
a = powerArray[i];
while (j < powerArray.length) {
b = powerArray[j];
while (k < powerArray.length) {
c = powerArray[k];
while (l < powerArray.length) {
d = powerArray[l];
approx = Math.pow(w, a) * Math.pow(x, b)
* Math.pow(y, c) * Math.pow(z, d);
if (Math.abs(approx - u) / u <= 0.01) {
temp[0] = a;
temp[1] = b;
temp[2] = c;
temp[3] = d;
temp[4] = approx;
}
l++;
}
k++;
}
j++;
}
i++;
}
return temp;
}
我应该将我的增量(如 i++、j++、k++ 和 l++)放在哪里?分配只需要在项目的这一部分使用 while 循环。我已经开始工作的项目的 for 循环部分。请让我知道你的想法。此代码不是分配的真实代码,但我想了解如何更新这些嵌套循环并能够从中获取正确数据的逻辑。当我使用下面的变量输出到屏幕时,我最终得到了 0,所以有些不对劲。通常我将增量 1 (i++,j++, ... 等) 放在循环的花括号末尾。在这种情况下,该方法不会产生好的结果。请帮忙! :)
【问题讨论】:
-
一般来说,你不会把增量放在循环的大括号的末尾,你把它放在大括号之前所以它在循环中并正确更新,因此不会发生无限循环
-
让我们稍微改变一下,等一下,我要重新编辑它,因为 0 仍然出现。
-
在 a、b、c 和 d 上方运行此代码时,将其设为零,因此近似值因此此处不正确
标签: java arrays while-loop