2014-01-10 138 views
0

首先不要将它称为重复的,除非实际上找到一个线程适用于我正在尝试执行的操作,因为我已经浏览了大约50个无助的线程。将int添加到数组

〜问题:我不知道如何正确地添加到像数组的整数“private int test[] ={}

〜我的代码:

private int generatedList[] = {}; 
private int lastInt = 1; 

    private void startList() { 
     if (generatedList.length == 30000) { 
      System.out.println(generatedList); 
     } else { 
      generatedList[lastInt+1] = generatedList[lastInt]; 
      lastInt++; 
      System.out.println(generatedList); 
      startList(); 
     } 
    } 

〜我试图做到:如果列表的长度小于30,000将最后一个int添加到数组然后lastInt ++,因此循环后说5次列表将打印如下:1,2,3,4,5

如何添加“lastInt”到generatedList []?

+8

您不能将任何东西放入长度为0的数组中。而且,数组没有动态长度。 –

+5

数组不能通过设计扩展。如果你想添加到数组中,你需要创建一个新的数组并复制内容。我建议使用'ArrayList',因为它是类似数组的,你可以添加/删除它。 – ashes999

+2

另外,(这对于很多语言来说都是通用的),一旦创建数组,它就不能生长。看ArrayList和朋友。 –

回答

8

Java中的数组的大小是固定的。事实上,你声明的那个大小为0。您将无法追加到最后。查看ArrayList课程,它会帮助你。

private ArrayList<Integer> generatedList; 
... 
generatedList.add(1234); 

但是,您的代码存在更大的问题。你的递归实现将会非常慢,并且它没有初始化数组中的第一个值。使用固定大小30,000的基本数组会更好,并且只需从0..30k循环并按索引填充值。我把它作为一个练习,因为这可能与一些作业有关:)

4

数组不可扩展。这是设计。

我建议使用ArrayList。它就像一个数组(可以对任何属性进行索引,就运行时复杂性而言几乎同样快),但具有可以添加和删除项目的其他属性。

做到这一点的简单方法是将generatedList更改为ArrayList<Integer>。如果你想保存一个数组,你总是可以创建一个新的数组并复制这些内容。 (尽管ArrayLists比较容易。)

3

您试图将新元素添加到大小为零的数组中。使用数组列表或首先指定数组大小。