-2

我有一个通过循环输出随机动物的程序。我的目标是让循环随机输出一只动物。我也尝试在循环外声明 array[0] - array[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
4

4 回答 4

3

这是固定代码:

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
  1. 数组中有 5 个元素,而不是 4 个。
  2. 您应该在循环之外填充数组,否则每次循环迭代时您都在填充它,这是无用的。您只想填充一次。
  3. 您的代码中没有任何与随机性有关的内容。我在最后一行添加了随机性。从toMath.random()返回一个随机数,因此将它乘以长度返回一个从to的数字。然后我将它转换为一个所以它不是十进制值。010length - 1int

此外,还有一种更简单的初始化数组的方法:

String[] array = {"Dogs!", "Rabbits!", "Cats!", "Fish!", "Horse!"};
于 2013-06-11T18:16:07.130 回答
1
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 循环。

于 2013-06-11T18:16:32.847 回答
1

你没有任何东西会导致代码中的任何随机性。看看使用Random。网站上有大量示例。

于 2013-06-11T18:16:23.547 回答
0

你会这样做:

import java.util.Random;
Random randomGenerator = new Random();
int randomInt = randomGenerator.nextInt(array.length);

System.out.println("my animal is" + array[randomInt]);
于 2013-06-11T18:17:37.787 回答