Java 在数组上使用Math.pow组合的相对误差为1%
我想知道如何从必须由多个变量访问的单个数组中访问和计算值。情况是,给定一个包含这些元素的类型为double的数组-5.0, -4.0, -3.0, -2.0, -1, -1 / 2, -1 / 3, -1 / 4, 0, 1 / 4, 1 / 3, 1 / 2, 1, 2, 3, 4, 5 目标是将其与Math.pow()函数结合使用,对w、x、y和z进行一系列计算,直到这些计算的组合与输入的原始数字的相对误差在1%以内。例如,用户输入3.14作为起始值,然后输入4个不等于1的正数作为值w、x、y和z。目标是使用Math.pow()函数将w、x、y和z提升为幂,指数是powerArray的元素。这些功率必须在while循环和for循环内改变,直到w、x、y和z的乘积提升到powerArray元素的某个组合,与原始3.14的相对误差在1%以内。我的问题是如何在while循环中访问这个powerArray,并能够在访问变量w、x、y和z的数组时更改索引,直到这些幂的乘积在原始数的1%相对误差范围内。请帮忙:) } 到目前为止,还没有一个测试用例产生以下结果。。。Java 在数组上使用Math.pow组合的相对误差为1%,java,arrays,for-loop,while-loop,Java,Arrays,For Loop,While Loop,我想知道如何从必须由多个变量访问的单个数组中访问和计算值。情况是,给定一个包含这些元素的类型为double的数组-5.0, -4.0, -3.0, -2.0, -1, -1 / 2, -1 / 3, -1 / 4, 0, 1 / 4, 1 / 3, 1 / 2, 1, 2, 3, 4, 5 目标是将其与Math.pow()函数结合使用,对w、x、y和z进行一系列计算,直到这些计算的组合与输入的原始数字的相对误差在1%以内。例如,用户输入3.14作为起始值,然后输入4个不等于1的正数作为值w、x
为epilson u:3.14输入一个值
输入w:13的值
输入x:5的值
输入y:200的值
输入z:99的值
使值更接近Epilson的指数是-5.0,-5.0,-5.0,-5.0。最终值是0.0,在3.14的0.1%以内
我没有时间仔细检查代码,但是。您可以在while
循环之外执行一次计算,并将其存储为变量x
。然后循环,直到该值不是您想要的:
i、 e
在循环内部重复在外部执行的操作,并更新和x
变量。然后在循环结束后,输入当x
实际保持可接受值时要执行的操作。请尽可能查看。到目前为止,我得到的最多是四个while循环
import java.util.Scanner;
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
double epilson, valueW, valueX, valueY, valueZ;
int i = 0, j = 0, k = 0, l = 0;
double approx = 0;
boolean checkValue = true;
double[] powerArray = { -5.0, -4.0, -3.0, -2.0, -1, -1 / 2, -1 / 3,
-1 / 4, 0, 1 / 4, 1 / 3, 1 / 2, 1, 2, 3, 4, 5 };
System.out.print("Enter a value for epilson u: ");
epilson = keyboard.nextDouble();
while (checkValue) {
System.out.print("Enter value for w: ");
valueW = keyboard.nextDouble();
System.out.print("Enter value for x: ");
valueX = keyboard.nextDouble();
System.out.print("Enter value for y: ");
valueY = keyboard.nextDouble();
System.out.print("Enter value for z: ");
valueZ = keyboard.nextDouble();
if ((valueW == 1) || (valueX == 1) || (valueY == 1)
|| (valueZ == 1)) {
System.out.println("Values of w,x,y,z must not be equal to 1.");
} else {
boolean iterator = true;
while (iterator) {
if (approx >= (epilson * 0.01)) {
iterator = false;
} else {
approx = Math.pow(valueW, powerArray[i])
* Math.pow(valueX, powerArray[j])
* Math.pow(valueY, powerArray[k])
* Math.pow(valueZ, powerArray[l]);
i++;
j++;
k++;
l++;
}
}
}
System.out.print("The exponents that bring value closer to Epilson are "
+ powerArray[i] + ", " + powerArray[j] + ", "
+ powerArray[k] + ", " + powerArray[l]);
System.out.println();
System.out.println("The final value is " + approx
+ " which is within 0.1% of " + epilson);
checkValue = false;
}
while( x > someOtherValue)
// do something