我有一个程序,它通过循环输出随机动物。我的目标是让循环随机输出一只动物。我也尝试在循环外声明数组[0] - 数组[4],但它仍然不起作用。
我做错了什么?
String[] array= new String[4];
//output random animals
for (int i = 0; i < array.length; i++) {
array[0] = "Dogs!"
array[1] = "Rabbits!"
array[2] = "Cats!";
array[3] = "Fish!";
array[4] = "Horse!";
itsATextArea.setText(array[i] + "n"); //output
}
编辑:错误弹出为...
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 4
这是固定代码:
String[] array= new String[5];
array[0] = "Dogs!";
array[1] = "Rabbits!";
array[2] = "Cats!";
array[3] = "Fish!";
array[4] = "Horse!";
//output random animals
itsATextArea.setText(array[(int) (Math.random() * array.length)]); //output
- 数组中有 5 个元素,而不是 4 个。 你应该在循环
- 之外填充数组,否则每次循环迭代时都要填充数组,这是无用的。你只想填一次。
- 代码中没有任何内容与随机性有关。我在最后一行添加了随机性。
Math.random()
返回一个从0
到1
的随机数,所以将其乘以长度会得到一个从0
到length - 1
的数字。然后我把它转换为int
所以它不是十进制值。
此外,还有一种更简单的初始化数组的方法:
String[] array = {"Dogs!", "Rabbits!", "Cats!", "Fish!", "Horse!"};
你没有任何东西会使你的代码有任何随机性。看看如何使用随机。网站上有很多例子。
array[0] = "Dogs!"
array[1] = "Rabbits!"
array[2] = "Cats!";
array[3] = "Fish!";
array[4] = "Horse!";
itsATextArea.setText((int)array[Math.floor(Math.random() * 5)]);
不需要 for 循环。
你会这样做:
import java.util.Random;
Random randomGenerator = new Random();
int randomInt = randomGenerator.nextInt(array.length);
System.out.println("my animal is" + array[randomInt]);