java中的数组,随机数

时间:2016-03-23 22:49:29

标签: java arrays random

我正在尝试创建可以存储0.00到100.00之间浮点数的数组。我遇到了hArray的问题,回到第四位,说它需要初始化并尝试多种方法来做到这一点,它告诉我将它改为doublehArray [] = null;。但是当我尝试不存储任何valuse时。

问题出现在第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]);
        }

2 个答案:

答案 0 :(得分:2)

重要的是要注意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的默认值。避免使用原语被认为是最佳实践。

答案 1 :(得分:1)

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

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

double[] hArray = new double[12];

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