在我的程序中,给定一系列x值,方程式被求解。然后,我如何将这些值存储到y中并将其作为数组打印出来。我以为我应该使用索引方法,但我有一个错误。 此行有多个标记 - 令牌上的语法错误"]",之后预期的VariableDeclaratorId 这个标记 - y无法解析为类型
我需要修改什么?
import java.lang.Math;
import java.util.Arrays;
public class Standard {
public static void main (String[] args) {
double exponent, x, pi, e, sqrtpart;
double[] y;
pi = 3.14159;
e = 2.71828;
x = -2.0;
int count = 0;
while (count < 20)
{
exponent = - ((x*x)/(2));
sqrtpart = Math.sqrt(2*pi);
y[] = (Math.pow(e,exponent))/sqrtpart;
System.out.println(y[index]);
x = x + 0.2;
count++;
}
}
}
答案 0 :(得分:1)
更改
double[] y;
到
double[] y = new double[20];
并且
y[] = (Math.pow(e,exponent))/sqrtpart;
System.out.println(y[index]);
到
y[count] = (Math.pow(e,exponent))/sqrtpart;
System.out.println(y[count]);
答案 1 :(得分:0)
您无法将值放入y array
,因为它目前没有任何大小。
尝试double y [] = new double [20];
另外
System.out.println(y[index]);
应该是
System.out.println(y[count]);
答案 2 :(得分:0)
你需要初始化y
将它放在while循环之外
y = new double[<size of your array>];
然后你可以使用索引方法
y[index] = (Math.pow(e,exponent))/sqrtpart;
答案 3 :(得分:0)
以前的答案可以帮助您解决编译问题。但是你还应该考虑其他事情:
您在while循环中的每次迭代中计算1 / sqrt(2 * pi)。从性能的角度来看,这并不好,因为这种计算永远不会改变。所以最好把这个计算从while循环中拉出来。
您无需定义自己的pi和e。只需使用Math类中的静态:Math.PI,Math.E
您的代码中有硬编码值,用于表示数组大小和增量。这会让你的代码变得脆弱。您可以更改一个号码而错过另一个号码。
请考虑以下事项:
import java.lang.Math;
public class Standard {
static int size = 20;
static double width = 4.0;
static double increments = width/size;
public static void main (String[] args) {
double exponent, x, sqrtpart;
double[] y = new double[size];
x = - (width / 2);
sqrtpart = Math.sqrt(2* Math.PI);
int count = 0;
while (count < size)
{
exponent = - ((x*x)/(2));
y[count] = (Math.pow(Math.E,exponent))/sqrtpart;
System.out.println(y[count]);
x = x + increments;
count++;
}
}
}