[英]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.