Java - 需要数组但找不到***并且找不到符号

时间:2015-02-12 21:19:26

标签: java arrays

我正在做一些事情,但我遇到了这个我无法解决的问题...... 有两种情况,但我需要同时使用它们......

1   @Test
2   public void newStackIsFull() {
3       BoundedStack targetStack = new BoundedStack(5);
4       targetStack[0] = new BoundedStack();
5       assertTrue(targetStack.isFull());
6   }

在这种情况下,我在第4行收到错误:array required, but BoundedStack found

如果我改变代码:

1   @Test
2   public void newStackIsFull() {
3       BoundedStack[] targetStack = new BoundedStack[5];
4       targetStack[0] = new BoundedStack();
5       assertTrue(targetStack.isFull());
6   }

我在第5行遇到错误:cannot find symbol .isFull()

问题在于我需要立刻同时处理这种情况。所以我必须能够从数组中读取数据,将数据放入数组中......并且还使用BoundedStack类中的方法。

2 个答案:

答案 0 :(得分:1)

您的第一个示例存在编译时错误,因为您尝试访问数组的第一个元素,但targetStack实际上是BoundedStack而不是数组。

你的第二个例子也有编译时错误;这次,您尝试在数组(isFull变量)上调用targetStack方法,并且此方法对于数组不存在。

你似乎混淆了一个对象的数组和对象本身。

BoundedStack[] targetStack = new BoundedStack[5];
//targetStack is now an array of 5 BoundedStack and not a BoundedStack
//targetStack[0] is the first element of the array, beware that as of this moment, it is null because the array was not initialized
targetStack[0] = new BoundedStack(); //you create a new BoundedStack object
System.out.println(targetStack[0].isFull()); //we print if this first element is full or not.

答案 1 :(得分:0)

如果你想在java中扩展数组类型:你不能。完全停止。

但是你可以使用List接口的实现(ArrayList这里似乎是一个不错的选择),它将使用索引存储东西,你可以使用get方法检索东西:

List<BoundedStack> list = new ArrayList<BoundedStack>();
list.add(new BoundedStack());
list.get(0);
list.isEmpty();

如果要向此类添加方法,则可以对其进行扩展。