【问题标题】:Issue with assigning random values to an array将随机值分配给数组的问题
【发布时间】:2021-06-05 23:07:11
【问题描述】:

我一直在尝试编写一种方法,该方法在调用时会生成一个随机长度的数组,并为每个值分配随机数。出于某种原因,我在 for 循环中遇到了越界异常。

   public static int[] randArray()
   {
       int[] myRandArray = new int[0];
       
       for (int i = 0; i <= (int)((Math.random() * 99) + 1); i++ ) {
           myRandArray[i] = (int)((Math.random() * 99) + 1);
       }
       
       return myRandArray;
   }

我是 Java 的新手,这可能是一个愚蠢的问题,但无论如何谢谢。

【问题讨论】:

  • 您创建了一个零长度数组。当您调用new int[SIZE] 时,您应该输入一个输入(例如方法参数)来确定数组的大小。如果您不想通过传递的值指定它,则使用数组初始化中的 rng(创建大于 0 的内容),然后像往常一样使用 myRandArray.length。

标签: java arrays random


【解决方案1】:

在尝试添加之前,您需要设置最终的数组长度:

int length  = (int)((Math.random() * 99) + 1);
int[] myRandArray = new int[length];

然后在循环内你可以简单地做:

for (int i = 0; i < length; i++ ) {
    myRandArray[i] = (int)((Math.random() * 99) + 1);
}

注意我在循环中如何使用i &lt; 而不是i &lt;= ,否则最后一项将超出范围。

【讨论】:

    【解决方案2】:

    你已经定义了一个大小为 0 的数组

    int[] myRandArray = new int[0];
    

    现在,如果你在这个数组中插入任何元素,你会发现每次索引都超出范围。

    改为使用动态数组,如 ArrayList,否则您可以进行以下调整。

    int[] myRandArray = new int[(int)((Math.random() * 99) + 1)];
    

    并循环遍历数组的长度。

    for(int i = 0;i < myRandArray.length; i++)
    ....
    

    【讨论】:

      【解决方案3】:

      解决方案:

      // create a random length
      int len = (int)((Math.random() * 99) + 1);
      int[] array = new int[len];
      
      // add random values to the array
      for (int i = 0; i < len; i++) {
          array[i] = (int)((Math.random() * 99) + 1);
      }
      System.out.println(Arrays.toString(array));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-01
        • 2019-05-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多