递增多个嵌套虽然循环
我遇到了增加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 ++?该分配只需要在项目的这一部分使用循环。我已经开始工作的项目的for循环部分。请让我知道你的想法。这段代码并不是真正的代码,但我想了解如何更新这些嵌套循环的逻辑,并能够从中获取正确的数据。当我使用下面的变量输出到屏幕时,我最终得到0,所以有些事情是不对的。通常我会在循环的大括号末尾加1(i ++,j ++,...等)。在这种情况下,该方法不会产生好的结果。请帮忙! :)
与for循环相同,在循环结束时执行增量。
double[] updateArray = new double[7];
double w,x,y,z;
int i=0, j=0, k=0, l=0;
while(i < updateArray.length)
{
w = updateArray[i];
while(j < updateArray.length)
{
x = updateArray[j];
while(k < updateArray.length)
{
y = updateArray[k];
while(l < updateArray.length)
{
z = updateArray[l];
l ++;
}
k ++;
}
j ++;
}
i ++;
}
我尝试了你在我的新编辑中看到的响应。可悲的是,当试图围绕该计算进行更新时,为每个整数获取数组的正确值似乎很困难。 for循环比这更简单,但在这种情况下只允许while循环。 – 2014-09-22 04:13:27
你可以这样做。
double[] updateArray = new double[7];
double w,x,y,z;
int i=0, j=0, k=0, l=0;
while(i++ < updateArray.length -1)
{
w = updateArray[i];
while(j++ < updateArray.length -1)
{
x = updateArray[j];
while(k++ < updateArray.length -1)
{
y = updateArray[k];
while(l++ < updateArray.length -1)
{
z = updateArray[l];
}
}
}
}
再次看看您的建议。它会抛出ArrayIndexOutOfBoundsException。 – Radiodef 2014-09-22 03:33:25
@Le达·哈'异常在线程“主” java.lang.ArrayIndexOutOfBoundsException:7 \t在com.test.Test23.main(Test23.java:15) ' – 2014-09-22 03:37:25
如果你不这样做与指数的任何魔法,只需要数组的元素在环(而不是索引),那么你可以使用增强的for循环:
double[] updateArray = new double[7];
/* fill your array */
for(double i : updateArray) {
for(double w : updateArray) {
for(double y : updateArray) {
for(double x : updateArray) {
// No incrementing or indices required :)
}
}
}
}
可悲即时通讯做计算和仅while循环被允许在这部分 – 2014-09-22 04:26:27
通常,您不要将增量**放在循环的大括号的末尾**,而是将它放在花括号之前**因此它在循环中并正确更新,因此不会发生无限循环 – nem035 2014-09-22 03:24:36
让我们改变这一点有点悬而未决,因为0仍然出现,所以我会重新编写它。 – 2014-09-22 04:04:10
当在a,b,c和d上面运行这段代码时,它们都是零,所以近似值如此不对, – 2014-09-22 04:07:20