Java数组问题

时间:2011-03-02 15:09:35

标签: java arrays string jsp random

我制作了一个数组,但我很困惑如何在随机生成器上显示数组内容。

E.g。如果我的数组中有四个语句,当我运行程序时,我得到数字3,我希望它链接到数组中的一个语句。

E.g。它应该打印出来: 3 - 找份工作

我正在将它用于数组:

String[] activityName = new String[5];     
    activityName[1] = "Go and Have Fun";
    activityName[2] = "Hiya, Go Shooping";
    activityName[3] = "Get a job";
    activityName[4] = "Read a book";

我正在使用此代码来生成一个随机数:

 Random generator = new Random();
    int n=5;
         int randomNumber = generator.nextInt( n );
    System.out.println(randomNumber);

另外,我不想在生成器中使用0。

任何帮助将不胜感激。谢谢。

5 个答案:

答案 0 :(得分:5)

总是从0索引中索引java中的数组。 Java中的数组是零索引的。您只需将1添加到生成的randomNumber即可。要获取活动名称,请参阅下面的samble,即使您删除/添加元素也是安全的。

    String[] activityName = new String[4];     
    activityName[0] = "Go and Have Fun";
    activityName[1] = "Hiya, Go Shooping";
    activityName[2] = "Get a job";
    activityName[3] = "Read a book";

    Random generator = new Random();
    int randomNumber = generator.nextInt(activityName.length);
    System.out.println(activityName[randomNumber]);

答案 1 :(得分:2)

如果我理解正确,那么你只会说:

System.out.println(activityName[randomNumber]);

答案 2 :(得分:0)

以下代码应该可以满足您的需求:

System.out.println(activityName[1 + new Random().nextInt(4)]);

答案 3 :(得分:0)

我要在dmcnelis的回答中添加一些内容,并说如果你真的不想因为某种原因使用第0个索引你应该这样做......

/* only select a random number in a range of 4 and add 1 to be sure it is > 0 */
int randomNumber = generator.nextInt( activityName.length - 1 ) + 1;
System.out.println(activityName[randomNumber]);

答案 4 :(得分:0)

鉴于您不想使用零索引,也许您应该尝试使用HashMap。 下面显示了一个代码示例,它会生成10个连续的随机选择。

HashMap是Java Collections Framework的一部分,它允许您访问一组功能强大的方法。

您可以扩展示例,只需使用“put”方法向hashmap添加更多选项即可。此示例依赖于您从1..x添加连续数字而没有任何间隙。

HashMap<Integer, String> activityName = new HashMap<Integer, String>();
activityName.put(new Integer(1), "Go and Have Fun");
activityName.put(new Integer(2), "Hiya, Go Shooping");
activityName.put(new Integer(3), "Get a job");
activityName.put(new Integer(4), "Read a book");

Random generator = new Random();
int n=activityName.values().size();

int randomNumber;
for (int i = 0; i < 10; i++) {

    //nextInt() gets numbers from 0(included) to n(excluded), so need to add 1
    randomNumber = generator.nextInt(n) + 1;

    //Cast the retured Object to a string
    String activity = new String(activityName.get(new Integer(randomNumber)));
    System.out.println(randomNumber + " - " + activity);
}