【问题标题】:Java Array QuestionJava 数组问题
【发布时间】:2011-07-07 08:48:11
【问题描述】:

我创建了一个数组,但我对如何根据随机生成器显示数组内容感到困惑。

例如如果我的数组中有四个语句,并且当我运行程序时得到第 3 个,我希望它链接到数组中的一个语句。

例如它应该打印出来: 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。

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

【问题讨论】:

  • 如果唯一的问题是你不想在生成器中有一个 0,你应该只取 n = 4 然后将一个添加到 randomNumber。

标签: java arrays string jsp random


【解决方案1】:

总是从 0-index 开始索引 java 中的数组。 Java 中的数组是零索引的。您可以简单地将 1 添加到生成的随机数中。要获取活动名称,请参阅下面的 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]);

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我不推荐这个,因为在这种情况下你可以得到 randomNumber=0 然后从数组中返回null
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      我将在 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]);
      

      【讨论】:

        【解决方案5】:

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

        HashMap 是 Java 集合框架的一部分,它使您可以访问一组强大的方法。

        您可以扩展该示例,只需使用“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);
        }
        

        【讨论】:

          猜你喜欢
          • 2011-06-15
          • 1970-01-01
          • 1970-01-01
          • 2018-01-05
          • 2011-04-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多