有什么办法可以在JAVA中的循环中创建数组?

时间:2019-10-31 19:14:31

标签: java arrays loops createobject

我试图创建一个对象,该对象的大小由用户定义,但是只有一个数组输出,有没有办法在循环中创建数组?

public class Somehthing {    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Scanner sc2 = new Scanner(System.in);
        Random rnd = new Random();
        System.out.println("How many array?:");

        for (int j = 0; j <= sc.nextInt(); j++) {
            System.out.println("Define array size:");
            int[] dizi = new int[sc2.nextInt()];
            for (int i = 0; i <= dizi.length - 1; i++) {
                int deger = rnd.nextInt(1000000);
                dizi[i] = deger;
                System.out.println(array[j]);
            }
        }
    }
}

2 个答案:

答案 0 :(得分:0)

二维数组将起作用:

Scanner sc = new Scanner(System.in);
Random rnd= new Random();

System.out.println("How many array?:");
int[][] array = new int[sc.nextInt()][];
for(int j = 0; j < array.length; j++){
    System.out.println("Define array size:");
    array[j] = new int[sc.nextInt()];
    for(int i = 0; i < array[j].length; i++){
        array[j][i] = rnd.nextInt(1000000);
    }
    System.out.println(Arrays.toString(array[j]));
}

答案 1 :(得分:0)

我不确定我是否理解正确,但是如果您要创建 n 个数组,那么您要做的就是使用新的数据结构来保存数组;例如ArrayList(您可以使用2D数组来存储信息,但是多维数组往往会变得非常复杂,非常快;这很简单。

因此,需要进行一些轻微的修改:

public static void main(String[] args) {


  Scanner sc = new Scanner(System.in);
  Scanner sc2 = new Scanner(System.in);  //I don't understand why you used a second scanner
  Random rnd= new Random();
  ArrayList<Integer[]> arrays = new ArrayList<>();  //you must import java.utils.ArrayList;
  System.out.println("How many array?:"); 

  for(int j=0;j<=sc.nextInt();j++){
     System.out.println("Define array size:");
     Integer[] array = new int[sc2.nextInt()];
     for(int i=0;i<=array.length-1;i++){
       int value=rnd.nextInt(1000000);
       array[i]= value;
       System.out.println(array[j]);
       }
     arrays.add(array); //You are adding this array into your List of arrays.
   }
}
  

请记住对列表使用包装类 Integer() ,原始类型将不起作用。如果您需要知道原因,请阅读   this堆栈溢出   回答或   this   泛型教程

我没有花时间来优化您的代码,因为我只是尝试解决您的问题/问题。