有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是否有更短的代码或更简单的方法将元素添加到不同大小的多个数组中?

这是我试图随机添加元素的代码。 是否有一种方法可以使用while循环、for循环或Java中的每个循环添加元素

package arrays_into_2d_array;

import java.util.*;

public class Arrays2DArray {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

    Random random = new Random();

    int [] arr1 = new int[50];
    for(int i = 0; i < arr1.length; i++){
        arr1[i] = 1+random.nextInt(5);
    }
    int [] arr2 = new int[100];
        for(int i = 0; i < arr2.length; i++){
        arr2[i] = 1+random.nextInt(5);
    }
    int [] arr3 = new int[200];
        for(int i = 0; i < arr3.length; i++){
        arr3[i] = 1+random.nextInt(5);
    }
    int [] arr4 = new int[400];
        for(int i = 0; i < arr4.length; i++){
        arr4[i] = 1+random.nextInt(5);
    }
    int [] arr5 = new int[800];
        for(int i = 0; i < arr5.length; i++){
        arr5[i] = 1+random.nextInt(5);
    }
    int [] arr6 = new int[1600];
        for(int i = 0; i < arr6.length; i++){
        arr6[i] = 1+random.nextInt(5);
    }
    int [] arr7 = new int[3200];
        for(int i = 0; i < arr7.length; i++){
        arr7[i] = 1+random.nextInt(5);
    }
    int [] arr8 = new int[6400];
        for(int i = 0; i < arr8.length; i++){
        arr8[i] = 1+random.nextInt(5);
    }
    int [] arr9 = new int[12800];
        for(int i = 0; i < arr9.length; i++){
        arr9[i] = 1+random.nextInt(5);
    }
    int [] arr10 = new int[25600];
        for(int i = 0; i < arr10.length; i++){
        arr10[i] = 1+random.nextInt(5);
    }


    int [][] arr2D = {arr1, arr2, arr3, arr4, arr5, arr6, arr7, arr8, arr9, arr10};

    for(int i = 0; i < arr2D.length; i++){
        System.out.println("Index = "+i+" of 2D array has = "+arr2D[i].length+" number of elements.");
    }

    }

}

任何帮助都将不胜感激


共 (3) 个答案

  1. # 1 楼答案

    不完全是循环,但使用流API的java 8版本非常简短:

    int[][] arr2D = IntStream.range(0, 10).map(i -> 50 << i) // stream of sizes
                             .mapToObj(size -> IntStream.generate(() -> random.nextInt(5) + 1).limit(size).toArray()) // stream of arrays with given sizes
                             .toArray(int[][]::new); // combine arrays
    
  2. # 2 楼答案

    当然。你要找的是一种方法

    您将声明一个接受int[]Random实例并执行循环的方法:

    public static void assignRandomValues(int[] array, Random random)
    {
        for (int i = 0; i < array.length; i++)
        {
            array[i] = 1 + random.nextInt(5);
        }
    }
    

    然后将代码转换为:

    int[] arr1 = new int[50];
    assignRandomValues(arr1, random);
    

    。。。等等

  3. # 3 楼答案

    您编写了太多几乎相同的代码,所以应该使用循环

    package arrays_into_2d_array;
    
    import java.util.*;
    
    public class Arrays2DArray {
    
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
    
            Random random = new Random();
            int [] sizes = {50, 100, 200, 400, 800, 1600, 3200, 6400, 12800, 25600};
            int [][] arr2D = new int[sizes.length][];
            for(int i = 0; i < arr2D.length; i++){
                arr2D[i] = new int[sizes[i]];
                for(int j = 0; j < arr2D[i].length; j++){
                    arr2D[i][j] = 1+random.nextInt(5);
                }
            }
    
            for(int i = 0; i < arr2D.length; i++){
                System.out.println("Index = "+i+" of 2D array has = "+arr2D[i].length+" number of elements.");
            }
    
        }
    
    }