我最初使用ArrayList
。但后来我的课程老师告诉我,我不能在我的课程中使用ArrayList
。他说我只能使用数组。
问题是当我向数组添加一个整数时,它只是在第一个索引上加零。
以下是代码:
int[] Bag = new int[1];
boolean isit = true;
do {
int[] NewBag = new int[Bag.length + 1];
String name = scanner.next();
if (name.equals("A")){
int number = scanner.nextInt();
for (int i = 0; i < Bag.length; i++) {
NewBag[NewBag.length - 1] = number;
NewBag[i] = Bag[i];
}
Bag = NewBag;
System.out.println(number + " added to Bag.");
}
} while (isit == true);
请帮帮我们。没有正确的添加操作,我无法进行最小和大小操作。
答案 0 :(得分:3)
首先使用单元素数组,然后立即向其添加第二个元素:
int[] NewBag = new int[Bag.length + 1];
因此,当您读取一个数字时,您的数组已经包含两个元素(即一个元素太多)。
要更正此问题,您需要更改
int[] Bag = new int[1];
到
int[] Bag = new int[0];
如果看起来很奇怪,请参阅Why does Java allow arrays of size 0?
您还需要移动
NewBag[NewBag.length - 1] = number;
离开循环。
答案 1 :(得分:0)
我不知道你想对你的数组做什么,但是如果你想把一个数组包装成一个类似于ArrayList的方法,你可以做类似的事情(介意,一旦到达数组的大小,int不会增长。):
class MyArray {
private final int[] mArray;
private int mSize = 0;
public MyArray(final int maxSize) {
mArray = new int[maxSize];
}
public void add(final int element) {
if (mSize < mArray.length) {
mArray[mSize++] = element;
} else {
throw new IndexOutOfBoundsException("No more room");
}
}
public int get(final int index) {
return mArray[index];
}
public int size() {
return mSize;
}
}
然后你可以做你的逻辑:
int maxSize = scanner.nextInt();
MyArray array = new MyArray(maxSize);
for(int i=0; i<maxSize; i++) {
array.add(scanner.nextInt());
}