我对Java编程比较陌生。
我有一个任务,我必须用0到100的随机数填充一个数组。但是,用户需要能够定义插入该数组中的随机数。为此,我现在创建了变量'n'。
我想我已经搞定了大部分密码。我想尝试使用随机类来创建随机数,而不是数学。随机*100。
我有个错误:
异常在线程"main"java.lang.ArrayIndexOutOfBoundsExc0019:10在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
}
}
}
engine[n] = myrandom.nextInt(100-0);
这应该是这样的:
engine[n-1] = myrandom.nextInt(99)+1; // To exclude 0 and 100.
Java数组的范围是0
到n-1
。数组的最后一个元素是n-1
而不是n
。您正在访问n
索引,该索引甚至不在范围内。
用于将元素添加到数组中。如果使用循环添加它们,那么您不需要单独添加最后一个元素的值。它将在循环中得到照顾。
for(int i=0; i < engine.length; i++) {
engine[i] = myrandom.nextInt(99)+1; // To exclude 0 and 100.
}
至于您的错误,数组的大小是n
,因此数组中的索引将从0
到n-1
。您在文章中显示的代码试图将一个随机变量放在索引中,超过不存在的数组的末尾(它是数组的边界,因此ArrayIndexOutOfBoundsExc0019
)。当n=10
时,您的数组将具有索引0
到9
,并且您正在尝试将值置于index10
。
相反,您希望使用随机整数初始化数组中的每个索引,因此您将希望循环遍历数组,就像打印数组一样,并为每个索引创建一个新的随机变量。
要生成随机数,如果使用Java 1.7或更高版本,可以使用ThreadLocalRandom
。看看这个对一个类似问题的伟大回答,了解在Java中生成随机数的“正确”方法(无论您是否使用Java 1.7)。
如果使用Java
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;
}
最后,使用Java1.7,您可以使用ThreadLocalRandom
,您可以在不初始化Random
实例的情况下使用它。以下是使用它的样子。
for (int i=0; i < engine.length; i++) {
engine[i] = ThreadLocalRandom.current().nextInt(1, 100);
}
我必须用奇数的范围(这里是)填充数组:1,3,5,7,9...但我总是在每个奇数之间有一个0,我不明白为什么。 注:注释中大写字母下的代码是由我们的教授给出的... 输出:
问题内容: 我是Java 8的新手,目前无法完全掌握Streams,是否可以使用Stream功能操作填充数组?这是我如何使用标准的for循环来实现的示例代码: 如果有可能,我将如何使用Stream?如果可能,是否方便(性能和可读性明智)? 问题答案: 在这里,您有一个解决方案,它生成数组而不是修改先前定义的变量: 如果要使用并行流,那么避免诸如修改变量(数组或对象)之类的副作用非常重要。这可能会导
问题内容: 我是Android的新手,我想尝试做一些非常基础的事情:Array中有5个字符串(例如’One’,’Two’…)。我想将这5个字符串添加到listactivity的列表视图中。 我的清单: 我的清单行: 基本上,我想将Array项绑定到TextView homeItemName。稍后我可能会在行中添加其他项,因此不能将listview绑定到条目。 谢谢! 问题答案: 对于代码,请快速浏
我对Javafx不熟悉,想知道如何从2维字符串数组填充桌面视图: 会非常感激你的回应。
Arrays 类提供了一个 fill() 方法,可以在指定位置进行数值填充。fill() 方法虽然可以填充数组,但是它的功能有限制, 只能使用同一个数值进行填充。语法如下: 其中,array 表示数组,value 表示填充的值。 例 1 声明一个 int 类型的 number 数组,然后通过 for 语句进行遍历,在该语句中调用 Arrays 类的 fill() 方法来填充数组,并输出数组中元素的
试图找到用从23开始的一些值按降序填充数组的最简单方法。我有下面的代码,但没有得到我正在寻找的结果: 现在输出 预料之中 如果可能的话,没有for/while循环,如何轻松填充数组并获得预期的输出?