【问题标题】:Java Array Creation and Array Name ChangeJava 数组创建和数组名称更改
【发布时间】:2012-04-10 04:22:43
【问题描述】:

您能否在 while 循环中创建一行代码来创建一个新数组 AND数组的名称 更改为while 循环的每次迭代?

例子:

int size = 10;
int name_count = 1;

while(size <= 100)
{
    //name_count is changing the name of the array by calling it
    // "array1", "array2", etc...
    //I know this may not be correct code for changing the name of
    // the array, but it is suppose to get the point across.
    int[] array(name_count) = new int[size]; 

    for (int i = 0; i <= size; i++)
    { /* Adding numbers to an array */ }

    size = size + 5;
    name_count++;
}

【问题讨论】:

  • 为什么要在每次循环迭代时更改数组的名称?不确定是否了解其背后的逻辑。 :) 无论如何,您的代码实际上不会更改数组的名称——它会创建一个新数组,不包含任何旧数字。
  • 我需要创建 19 个不同的数组,第一个数组包含 10 个有符号整数,每个数组的大小将增加 5,直到达到 100。因此,希望每次迭代都更改数组名称。
  • 您是否正在尝试重新创建一个数据结构,例如 ArrayList,随着更多元素的添加,它的数组大小会在底层增加?您有两个可以使用的选项,可以更有效地解决您的问题。首先,只需提前创建所有数组。或者其次,每次增加 5 时,使用 size = oldsize + 5 创建一个新数组并将旧值复制到新数组中。这样你的数组就会像 ArrayList 一样动态增长。

标签: java arrays variables while-loop iteration


【解决方案1】:

您不能更改数组的名称,它只会在每次成功循环时重新声明数组。 (这将是一个新的空白数组。)我认为您正在寻找的是一个二维数组。

int[][] myArray = new int[3][3];

【讨论】:

  • 我不想使用 2D 数组,因为我必须创建 19 个不同的数组,其中 Array1 的大小为 10,并且每个数组的大小增加 5 直到达到大小 100。因此,在这个事实之后,我的项目要求我做的事情在数组中会有太多的空白空间。这部分只占我整个项目的 5%,这是我遇到最多问题的部分。
  • 我明白你的意思,我相信 Dave Costa 对 ArrayList 的回答可能是解决方案。试一试。
【解决方案2】:

标识符名称需要在编译时定义。因此,您不能在循环的每次迭代中显式使用不同的变量名。

您的伪代码的另一个问题是,如果要在循环内声明数组,则循环完成时它将超出范围,因此没有什么意义。

要执行此类操作,您需要使用一些集合来保存数组,并且将它们设为显式对象而不只是数组会更容易。比如:

List<List<Integer>> listOfArrays = new ArrayList<List<Integer>>();
while (size <= 100) {
  List<Integer> listOfNumbers = new ArrayList<Integer>(size);
  /* insert loop here to add numbers to listOfNumber */

  size += 5;
  name_count += 1;
}

然后您可以使用listOfArrays 中的索引访问每个数字列表——相当于使用索引命名每个数字,但在运行时而不是编译时处理。

【讨论】:

  • 我知道你在做什么,动态很有用。我觉得我会遇到的唯一问题是将放入每个元素中的整数将使用“Random.nextInt()”。我可以更详细地了解该项目,但我不想在这里。
  • 我看不出您认为这可能会导致什么问题。
猜你喜欢
  • 2022-11-21
  • 2014-06-14
  • 2014-05-22
  • 1970-01-01
  • 1970-01-01
  • 2015-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多