【问题标题】:How to initialise an array in a loop in java?如何在java中的循环中初始化一个数组?
【发布时间】:2017-05-26 16:29:22
【问题描述】:

我正在循环中的变量中获取数组的大小。每次我必须分配等于该变量的数组大小,然后取等于该大小的整数。例如:

for(i = 0; i < N; i++)
{
    variable = sc.nextInt();
    int []array = new int[variable];
    for(j = 0; j < variable; j++)
    {
        array[j] = sc.nextInt();
    }
}

由于我是java新手,请提供最有效的方法:)

【问题讨论】:

  • 为什么是第一个循环 for(i=0;i&lt;N;i++)
  • 一个 ArrayList 就足够了吗?
  • “请提供最有效的方法,因为我是 java 新手 :)” StackOverflow 不是一个您可以发布问题并获取代码作为回报的网站。请说明您当前的实施有什么问题,我们或许可以提供帮助。
  • 使用您发布的代码有什么问题?
  • @YCF_L 正如我在问题中提到的那样,我想要 N 个变量,并且每次我想要创建一个该变量大小的数组,即数组的大小等于变量和这样的 N 个数组。

标签: java arrays performance optimization


【解决方案1】:

也许你需要这样的东西:

List<int[]> list = new ArrayList<>();//create a list or arrays
for (int i = 0; i < n; i++) {

    int variable = sc.nextInt();
    int[] array = new int[variable];
    for (int j = 0; j < variable; j++) {
        array[j] = sc.nextInt();
    }

    list.add(array);//add your array to your list
}

【讨论】:

    【解决方案2】:

    您可以创建数组列表并在外循环上对其进行初始化,并使用位置ij 向数组添加值。

    // initialize list with n, though you can also use 2D array as well
    List<int[]> array = new ArrayList<>(n);
    
    for (int i = 0; i < n; i++) { 
        variable = sc.nextInt();
    
        // create an array and add it to list
        array.add(new int[variable]);
    
        for (int j = 0; j < variable; j++) {
            // fetch the array and add values using index j
            array.get(i)[j] = sc.nextInt();
        }
    }
    

    【讨论】:

      【解决方案3】:
      for(i=0;i<N;i++)
      {
          variable = sc.nextInt();
          ArrayList array = new ArrayList(variable)
          for(j=0;j<variable;j++)
          {
              int input = sc.nextInt()
              array.add(input);
          }
      }
      

      如果 ArrayList 有效,我会这样做。

      【讨论】:

      • OP 要求数组初始化,因此这不是答案。
      猜你喜欢
      • 1970-01-01
      • 2010-12-28
      • 1970-01-01
      • 2011-04-02
      • 2011-03-10
      • 2011-08-18
      • 2011-07-12
      相关资源
      最近更新 更多