如何在数组中添加元素?

时间:2011-10-29 13:22:27

标签: java arrays

请参阅代码:

public Core()
{   
    class1 = new int[5]; //declares array for 5 class 
    class2 = new int[5]; //delcares array for 5 class

    System.out.println("Please type 1 for First Classe:");
    select = input.nextInt();

    if(select == 1)
    {

    }

}

好的。如果用户选择选项号1,则占用阵列存储器中的一个位置。例如:

class1 = new int[4];

或者,如果超过内存,则会显示一条消息。

4 个答案:

答案 0 :(得分:2)

您无法向数组添加元素 - 它们在创建后是固定大小。我怀疑你最好使用List实现某些描述,例如ArrayList

说实话并不是很清楚 - 说实话 - 但几乎可以肯定的是,使用集合代替数组可以让你的生活更轻松。

答案 1 :(得分:0)

您在寻找ArrayList吗?

import java.util.*; 
ArrayList list = new ArrayList(); 

ArrayLists具有动态大小,因此您可以在运行时添加和删除数组成员。

list.add(someObject); //add object
list.remove(2); //remove object by index, objects will 'slide' down to fill the gap
int size = list.size(); //get size of ArrayList
String object = list.get(3) //get object in array, not always string

答案 2 :(得分:0)

为什么不直接使用java.util.List

List<List<Integer>> classes = new ArrayList<List<Integer>>();
classes.add(new ArrayList<Integer>());
classes.add(new ArrayList<Integer>());

// Assume the user inputs 1.
int select = 1;

// Retrieve the list and add values to the list.
List<Integer> theClass = classes.get(select);
theClass.add(someValue);
..
theClass.add(someValueN);    

// And from your question you wanted some restriction on the size, 
// so you deal with that here, for instance.
if (theClass.size() > 5) {
  System.err.println("Size exceeded!");
  for (int i = theClass.size() - 1; i >= 5; i--) {
    theClass.remove(i);
  }
}

// Print them out.
for (int i = 0; i < theClass.size(); i++) {
  // The difference to your comment is actually referencing 
  // all entries with the index 'i'.
  System.out.println(theClass.get(i));
}

请注意,如果您稍后再次删除该元素,最好不要添加该元素。但这只是这个想法的简单说明。

答案 3 :(得分:0)

好像你想在数组中插入元素,直到它满了。

您声明的那个不是动态数组而是静态数组。这意味着,一旦您宣布int[] class1 = new int[5],您将只有5个插槽,并且您必须小心插入它们。

class1[0] = value

这个值在数组的第一个插槽中插入,而下一个插入:

class1[5] = something

是错误的,因为您正在尝试设置大小为5的数组的第六个元素。您需要做的是添加元素直到填充数组。您可以通过具有跟踪当前位置的索引值来执行此操作:

int index = 0; int [] class1 = new int [5];

....
if (index < class1.length)
  class1[index] = value
else
  //ARRAY IS FULL!

或者您可以检查阵列本身:

int i = 0;
boolean placed = false;
while (i < class1.length && class1[i] != null)
  ++i;
if (i < class1.length)
  class1[i] = value;
else
  //ARRAY IS FULL!

但我的建议是绝对使用ArrayList,并将最大尺寸保留为变量。