将计算值存储到数组中

时间:2013-12-18 02:53:58

标签: java arrays loops math

在我的程序中,给定一系列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++;
        }
       }
    }

4 个答案:

答案 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)

以前的答案可以帮助您解决编译问题。但是你还应该考虑其他事情:

  1. 您在while循环中的每次迭代中计算1 / sqrt(2 * pi)。从性能的角度来看,这并不好,因为这种计算永远不会改变。所以最好把这个计算从while循环中拉出来。

  2. 您无需定义自己的pi和e。只需使用Math类中的静态:Math.PI,Math.E

  3. 您的代码中有硬编码值,用于表示数组大小和增量。这会让你的代码变得脆弱。您可以更改一个号码而错过另一个号码。

  4. 请考虑以下事项:

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