Java 递增多个嵌套While循环
我在增加4个嵌套while循环时遇到问题。假设有一个double类型的数组和许多整数来增加循环。这里有一个例子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
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循环比这简单得多,但在这种情况下只允许循环。遗憾的是,我正在进行计算,并且只允许循环这部分