繁体   English   中英

将计算值存储到数组中

[英]Storing Calculated Values into an Array

在我的程序中,给定x值范围,方程求解了y。 然后,如何将这些值存储到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++;
        }
       }
    }

更改

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

您无法将值放入y array因为它目前没有任何大小。

尝试double y [] = new double [20];

System.out.println(y[index]);

应该

System.out.println(y[count]);

您需要初始化y

将其放在while循环之外

y = new double[<size of your array>];

然后可以使用索引方法

y[index] = (Math.pow(e,exponent))/sqrtpart;

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

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

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

  3. 您在代码中具有对数组大小和增量进行硬编码的值。 这会使您的代码脆弱。 您可以更改一个数字而错过另一个数字。

因此,请考虑以下几点:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM