繁体   English   中英

Java中的数组,具有随机数

[英]Array in java, with random number

我正在尝试创建和可以存储从0.00到100.00的任何地方的浮点数的数组。 我在hArray上遇到问题,从它的第四个开始说它需要初始化,并尝试了多种方法来执行此操作,它告诉我将其更改为doublehArray [] = null;。 但是当我尝试没有任何值存储在其中时。

问题发生在第3行和第27行之间,即hArray [i}] = rnum

忽略我只是使用那些来检查错误的打印行命令。

public static void main(String[] args) {
    int i;
    double hArray[];
    int nYears = 0, y = 0;
    double rMax = 0.00,rMin = 100.00;

    get input check if between 1-80
    while(y == 0){
    String userData = JOptionPane.showInputDialog
                               ("Enter number of years");
    nYears = Integer.parseInt(userData);

    if (nYears > 1 && nYears <= 80 )
        y = 1;

    }

     reset y to = 0
    y = 0;
    System.out.println("step1 "+ nYears+ " "+ y);
    while(y <= nYears){
        System.out.println("step2");
        for(i = 0; i < 12; i++){
            System.out.println("step3");
            Random rand = new Random();
            double rNum = rand.nextFloat() * (rMax - rMin) + rMin;
            hArray[i] = rNum;
            System.out.println("step4" + hArray[i]);
        }

注意Java中的某些内容很重要。 首先,此行是“声明参考”:

double hArray[];

一切都是说将有一个double类型的数组,并将该数组命名为hArray 该数组实际上并未初始化 然后,在这一行:

hArray[i] = rNum;

... rNum实际上不能放在任何地方,因为该数组不存在。

首先,您可以执行以下操作将数组“初始化”为长度12

double[] hArray = new double[12];

然后第二行将起作用。 请注意,如果您尝试引用的位置大于12则将导致错误:这里列表的大小被认为是不可变的

或者,您可以摆脱使用原语而使用Collection的麻烦。 在这种情况下, List

List<Double> hArray = new ArrayList<>();

然后,稍后:

hArray.add(rNum);

这样可以避免您从一开始就需要知道阵列的大小。 列表将自动缩放。 而且,它不会采用默认值:通过初始化基本元素数组,会将等于0的默认值放置在数组中。 避免使用基元被认为是最佳实践。

double hArray[]声明一个数组,但不分配它。
还请记住,数组是固定大小的。

由于您的代码需要12个值的数组,因此应更改为:

double[] hArray = new double[12];

现在将为该数组分配12个值,所有默认值为0.0

暂无
暂无

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

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