【问题标题】:Is there a way to create an array in java with some initialized numbers and then add random numbers to it有没有办法在java中创建一个带有一些初始化数字的数组,然后向它添加随机数
【发布时间】:2019-11-03 06:10:27
【问题描述】:

我正在尝试创建一个包含 7 个手动输入数字和 43 个随机数字的数组。

我可以在 C 中做到这一点,但我在 java 中面临挑战,手动输入的 7 个数字在打印数组时始终显示为零

int arr3[]= {1,2,3,4,5,6,7}; // this is where I created the array 
arr3=new int[50];

//这是我试图填充它的地方

for (int i = 7; i < arr5.length; i++) 
{
arr3[i] = (int) (Math.random() * 1500);
} 

我希望前几个数字是手动输入的,其余的是随机创建的

【问题讨论】:

    标签: java arrays random numbers


    【解决方案1】:

    这是因为您执行arr3=new int[50]; 会将列表中的每个值重置为 0,并将数组的大小设置为 50。这里 int arr3[]= {1,2,3,4,5,6,7}; 您将大小设置为 7。例如,您可以这样做:

    int arr3[]= new int[50];
    arr3[0] = 1;
    arr3[1] = 2;
    arr3[2] = 3;
    arr3[3] = 4;
    arr3[4] = 5;
    arr3[5] = 6;
    arr3[6] = 7;
    
    for (int i = 7; i < arr3.length; i++) {
        arr3[i] = (int) (Math.random() * 1500);
    }
    

    【讨论】:

      【解决方案2】:

      此声明:

      arr3 = new int[50];
      

      正在重新声明 arr3,这意味着初始化 arr3 的所有内容都将被丢弃,这就是为什么您会看到默认的 int 值 (0)。

      您可以通过将input 复制到更大的数组中来解决它:

      int[] arr3 = new int[50];
      int[] input = { 1, 2, 3, 4, 5, 6, 7 };
      
      for (int i = 0; i < input.length; i++) {
          arr3[i] = input[i];
      }
      
      for (int i = input.length; i < arr3.length; i++) {
          arr3[i] = (int) (Math.random() * 1500);
      }
      

      【讨论】:

        【解决方案3】:

        问题是您正在创建一个新的空数组来替换第一个数组。

         int arr3[]= {1,2,3,4,5,6,7}; // new int[7]; populated with the values
         arr3 = new int[50]; // new, empty, array and replacing the first
        

        我建议使用System.arraycopy 将值复制到您的数组中:

        public static void main(String[] args) {
        
            // create the array
            int[] array = new int[50];
        
            // copy initial values into the array
            int[] values = {1,2,3,4,5,6,7};
            System.arraycopy(values, 0, array, 0, values.length);
        
            // populate random values
            for (int i = values.length; i < array.length; i++) {
                array[i] = (int) (Math.random() * 1500);
            }
        
            // print the array
            System.out.println(Arrays.toString(array));
        }
        

        【讨论】:

          【解决方案4】:

          你几乎做对了。你应该做的是——

          int arr3[] = new int[50]; //creating a new array
          int arr3[] = {1,2,3,4,5,6,7};
          

          您做错了什么是您创建了一个大小为7 的数组arr3,然后以50 的大小重新创建它,所以当您创建大小为50 的新数组时,在内存中以前的值被 0 替换,因为在 java 中,数组的每个元素默认初始化为 0

          现在您可以轻松填充它。另外我建议使用Java.util.Random 类来生成随机数。你可以阅读更多关于它的信息here

          【讨论】:

            【解决方案5】:

            其他答案都直接(而且很好)回答了你的问题,所以我想建议另一种方法。

            您似乎不需要特定的数组长度(它不直接在第二个循环中使用),因此可能会发现使用 List 更容易,然后在完成后将其转换为数组。

            List<Integer> list = new ArrayList<>();
            for(int i=1; i<=7; i++) {
                list.add(i);
            }
            
            for (int i = 7; i < arr5.length; i++) {
                list.add((int) (Math.random() * 1500));
            }
            
            int[] arr3 = list.toArray(new int[list.size()]);
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2022-01-22
              • 2020-10-09
              • 1970-01-01
              • 2012-10-09
              • 2018-08-22
              • 2023-01-31
              • 1970-01-01
              • 2016-06-23
              相关资源
              最近更新 更多