【发布时间】:2015-02-18 17:17:54
【问题描述】:
这种方法已经困扰了我好几个小时。它是 X 类型的 array 的一部分,应该采用任何数据类型。这是我第一次使用泛型类型array 和调试器。
我从测试中得到的错误是:
expected: 'hello' but was 'null' and
0: ...ArrayOutOfBoundsException: 0
看起来ArrayOutOfBoundsException 处理也没有正确抛出。
我不知道该怎么办。我的删除功能似乎工作正常。
public void insert( int index, X item )
{
if ( index > 0 || index < length )
{
length++;
X[] obj2 = (X[]) new Object[obj.length - 1];
for ( int i = 0; i == index; i++ )
{
obj2[i] = obj[i];
}
obj2[index] = item;
for ( int i = index; i == length; i++ )
{
obj2[i + 1] = obj[i];
}
obj = obj2;
}
else
{
throw new java.lang.ArrayIndexOutOfBoundsException("" + index);
}
}
@Test
public void testInsert()
{
XArray<String> b = new XArray<String>();
b.add("hello");
b.add("bye");
b.insert(1, "adios");
assertEquals("hello", b.get(0));
assertEquals("adios", b.get(1));
assertEquals("bye", b.get(2));
assertEquals(3, b.size());
b.insert(1, "buenos dias");
assertEquals(4, b.size());
assertEquals("hello", b.get(0));
assertEquals("buenos dias", b.get(1));
assertEquals("adios", b.get(2));
b.insert(0, "hi");
assertEquals(5, b.size());
assertEquals("hi", b.get(0));
assertEquals("hello", b.get(1));
b.insert(4, "see ya");
assertEquals(6, b.size());
assertEquals("see ya", b.get(4));
assertEquals("bye", b.get(5));
}
【问题讨论】:
-
做什么:第一件事:正确缩进你的代码。
-
当您的
index等于0时,您正在抛出java.lang.ArrayIndexOutOfBoundsException,您没有处理它! -
@dsorenson 请提问。