Java 递增多个嵌套While循环

Java 递增多个嵌套While循环,java,arrays,while-loop,Java,Arrays,While Loop,我在增加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

我在增加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;
}
private static double[]approxOfU(双w,双x,双y,双z,
双u){
双a=0,b=0,c=0,d=0;
最终双[]功率阵列={-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 };
双精度[]温度=新双精度[5];
双倍近似;
int i=0,j=0,k=0,l=0;
while(i如果(Math.abs(约-u)/u与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 ++;
}
double[]updateArray=newdouble[7];
双w,x,y,z;
int i=0,j=0,k=0,l=0;
而(i
你可以这样做

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];
             }
        }
    }

}
double[]updateArray=newdouble[7];
双w,x,y,z;
int i=0,j=0,k=0,l=0;
而(i++
如果您不使用索引,只需要循环中的数组元素(而不是索引),那么您可以使用增强的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 :)
            }
        }
    }
}

一般来说,你不会把增量放在循环的大括号的末尾,而是放在大括号的前面,这样它就在循环中,并正确地更新,这样就不会出现无限循环。让我们把它改大一点,等等,我要重发它,因为0仍然出现。当在a、b、c和d上面运行这个代码时,它会变成0,所以应用程序rox值,因此此处有点不正确请再次查看您的建议。它将在com.test.Test23.main(Test23.java:15)的线程“main”java.lang.ArrayIndexOutOfBoundsException:7中抛出ArrayIndexOutOfBoundsException@Le Duy Khanh
异常
正如您在我的新编辑中看到的那样,我尝试了您的响应。遗憾的是,在尝试更新该计算并为每个整数获取正确的数组值时似乎很困难。for循环比这简单得多,但在这种情况下只允许循环。遗憾的是,我正在进行计算,并且只允许循环这部分