2012-03-26 28 views
0

你可以创建一个行的代码,while循环中,这将创造一个新的数组变化数组的名字与while循环的每次迭代?Java数组的创建和阵列名称更改

实施例:

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++; 
} 
+2

为什么要在循环的每次迭代中更改数组的名称?不知道如果得到这背后的逻辑。 :)无论如何,你的代码实际上并不会改变数组的名称 - 它会创建一个NEW数组,不包含任何旧数字。 – FloppyDisk 2012-03-26 16:35:49

+0

我需要创建19个不同的数组,第一个数组包含10个有符号整数,每个数组的大小将增加5,直到达到100。因此,想要在每次迭代中更改数组名称。 – seiryuu10 2012-03-26 16:50:20

+0

您是否正在尝试重新创建一个数据结构,比如ArrayList,它的数组大小随着更多元素的添加而增加?你有两种选择可以更有效地解决你的问题。首先,只需提前创建所有阵列。或者第二,每次你增加5时,用'size = oldsize + 5'创建一个新数组,然后将旧值复制到新数组中。这样你的数组会像ArrayList一样动态增长。 – FloppyDisk 2012-03-26 17:19:30

回答

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 - 相当于命名每一个与索引,但在运行时,而不是编译时处理。

+0

我看到你要去哪里,动态是有用的。我觉得我会碰到的唯一问题是将放在每个元素中的整数将使用'Random.nextInt()'。我可以更详细地了解这个项目,但我不想在这里。 – seiryuu10 2012-03-26 17:37:46

+0

我看不到您认为可能导致的问题。 – 2012-03-26 19:02:27

0

您不能更改数组的名字,它只是将重新申报,每个成功的循环数组。 (这将是一个新的空白数组)。我认为你正在寻找的是一个二维数组。

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

我不想使用2D数组,因为我必须创建19个不同的数组,Array1的大小为10,每个数组的大小增加5,直到达到大小100。由于这个原因,阵列中会有太多的空白空间,因为我的项目在这个事实之后要求我做。这部分只占我总项目的5%,这是我遇到的最多问题。 – seiryuu10 2012-03-26 17:00:28

+0

我明白你的观点,我相信Dave Costa对ArrayList的回答可能是解决方案。试一试。 – 2012-03-26 17:17:06