【问题标题】:Randomize Array of numbers 1 through 100随机化 1 到 100 的数字数组
【发布时间】:2014-01-19 08:08:46
【问题描述】:

我正在尝试创建一个程序来创建一个从 1 到 100 的数字数组,然后将它们随机化。到目前为止我有这个,但不知道下一步该怎么做:

public class Random100Array
{
   public static void main(String args[])
   {
      {
      int[] nums = new int[100];
      char current;
      int a;

      for (int i = 0; i <= nums.length; i++) {
         nums[i] = i + 1;
      }

      for (int i1 = 0; i1 <=nums.length; i1++) {
         double random = (Math.random() * 100) + 1;
      }
      }
   }
}

另外,这不是家庭作业。我是学生,现在正在放寒假。这个程序出于某种原因给了我这个输出。我做错了什么?

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 100
    at Random100Array.main(Random100Array.java:11)

【问题讨论】:

  • 你为什么要创建一个随机数nums.length 次,然后什么都不做?另外,当您说“随机化它们”时,您的意思是打乱数组还是为每个元素选择一个新的随机数?
  • 你想得到这些数字的排列还是只是一个范围内的随机数数组?
  • @pkacprzak 我想使用我已经创建的数组随机化数组中的数字

标签: java arrays math random integer


【解决方案1】:

在你的 for 循环中使用 &lt; 而不是 &lt;=

【讨论】:

  • 解决了奇怪输出的问题。
【解决方案2】:

首先,您应该注意其他答案中提到的 for 循环条件。

然后,对于输入数组的洗牌,您可以使用以下代码:

import java.util.Random;

public class Program {

    public static void main(String[] args) 
    {
        int[] nums = new int[100];

        for(int i = 0; i < nums.length; ++i) 
        {
            nums[i] = i + 1;
        }

        Random generator = new Random();
        for(int i = 0; i < nums.length; ++i) 
        {           
            int j = generator.nextInt(nums.length - i);         
            int tmp = nums[nums.length - 1 - i];
            nums[nums.length - 1 - i] = nums[j];
            nums[j] = tmp;
        }
    }

}

【讨论】:

    【解决方案3】:

    初始化长度为 100 的数组意味着,您的索引范围为 0 到 99,因此您不会有索引 100,这就是您收到此异常的原因。 nums.length 将是 100(因为您将长度初始化为 100。基本上您的 for 循环范围从 0 到 100(即 101 个数字),这是超出范围的。

    在 for 循环中使用 &lt; 而不是 &lt;=

    要对数组进行洗牌,请尝试以下操作: https://stackoverflow.com/a/1520212/995320

    【讨论】:

      【解决方案4】:

      你需要使用

      另外,您可以使用 try catch 来转义异常,但这不被认为是好的做法

      【讨论】:

        猜你喜欢
        • 2014-01-23
        • 1970-01-01
        • 1970-01-01
        • 2011-01-23
        • 2016-09-25
        • 2011-12-25
        相关资源
        最近更新 更多