随机化数字1到100的数组

时间:2014-01-01 21:24:38

标签: java arrays math random integer

我正在尝试创建一个程序来创建数字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)

4 个答案:

答案 0 :(得分:2)

在for循环中使用<代替<=

答案 1 :(得分:1)

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

在for循环

中使用<代替<=

对数组进行混乱,尝试这样的事情: https://stackoverflow.com/a/1520212/995320

答案 2 :(得分:1)

首先,您应该照顾其他答案中提到的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 :(得分:0)

你需要使用&lt;而不是&lt; =

此外,您可以使用try catch来转义异常,但这不会被视为良好做法