gpt4 book ai didi

java - 使用随机类填充数组然后打印它的值

转载 作者:行者123 更新时间:2023-11-30 08:45:43 25 4
gpt4 key购买 nike

我对 Java 编程还比较陌生。

我有一个类任务,我必须用 0 到 100 之间的随机数填充一个数组。但是,用户需要能够定义插入到该数组中的随机数的数量。为此,我现在创建了变量“n”。

我想我已经确定了大部分代码。我想尝试使用 Random 类来创建随机数,而不是 math.random*100。

我收到一个错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10 at CreateArray.main(CreateArray.java:11)

这是我的代码:

import java.util.Scanner;
import java.util.Random;

public class CreateArray{
public static void main(String [] args){
int n = 10;
Random myrandom = new Random();
int[] engine = new int[n]; // Initialising my array and giving it the name engine, I'm also passing value 'n' to my array length
engine[n] = myrandom.nextInt(100-0); //This exclues 100 and 0, to include those I would say +100 or +0

for(int i=0; i < engine.length; i++){ //Using a for loop to cycle through my array and print out its elements
System.out.println(engine[i]); //Printing out my array
}
}
}

最佳答案

至于你的错误,你的数组的大小是n,所以你的数组中的索引将从0n-1。您在帖子中显示的代码试图将一个随机变量放在不存在的数组末尾之后的索引中(它超出数组的范围,因此 ArrayIndexOutOfBoundsException ).当 n=10 时,您的数组将具有从 09 的索引,而您正试图在索引 10

相反,您想用随机整数初始化数组中的每个索引,因此您需要遍历数组,就像打印数组一样,并为每个索引创建一个新的随机变量。

要生成随机数,如果您使用的是 Java 1.7 或更高版本,则可以使用 ThreadLocalRandom。参见 this great answer关于在 Java 中生成随机数的“正确”方法的类似问题(无论您是否使用 Java 1.7+)。

如果使用 Java < 1.7,生成范围内随机数的“标准”方法如下所示:

public static int randInt(int min, int max) {
//you can initialize your Random in a number of different ways. This is just one.
Random rand = new Random();

int randomNum = rand.nextInt((max - min) + 1) + min;

return randomNum;
}

请注意,在您的代码中您提到 myrandom.nextInt(100-0); 将为您提供 0 到 100 之间的数字,不包括 0 到 100。这并不完全正确。这将为您提供 0 到 99 之间的数字,包括 0 和 99。

因为您知道您只需要 1 到 99 之间的数字,所以您可以将这些数字插入上面的方法中以获取它。

public static int randInt() {
Random rand = new Random();
return rand.nextInt(99) + 1;
}

因为这基本上是一个单行代码,所以它实际上并不需要自己的方法,因此您可以生成随机数并将它们存储在引擎数组中而无需方法,就像这样。

Random myrandom = new Random();
for (int i=0; i < engine.length; i++) {
engine[i] = myrandom.nextInt(99) + 1;
}

最后,使用 Java 1.7+,您可以使用 ThreadLocalRandom,无需初始化 Random 实例即可使用。这是使用它的样子。

for (int i=0; i < engine.length; i++) {
engine[i] = ThreadLocalRandom.current().nextInt(1, 100);
}

关于java - 使用随机类填充数组然后打印它的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33155774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com