制作此方法时出现不兼容类型错误消息。该方法假设将指定的元素插入列表的指定索引,但它不会覆盖该位置的任何现有数据。此方法允许添加到列表末尾之外的第一个索引。例如,如果列表的大小为10,则索引9是其逻辑结尾,但此方法允许在索引10处添加元素。
public void add(int index, java.lang.Object element)
{
int tempCap = myArray.length;
Object[] copyArray;
int count;
if(tempCap < index)
{
tempCap = tempCap * 2;
for(int i = 0; i < tempCap; i++)
{
copyArray[i] = myArray[i];
}
copyArray[index] = copyArray[element];
}
else
{
myArray[index] = myArray[element];
}
}
错误讯息:
BasicArrayList.java:53: incompatible types
found : java.lang.Object
required: int
copyArray[index] = copyArray[element];
^
BasicArrayList.java:57: incompatible types
found : java.lang.Object
required: int
myArray[index] = myArray[element];
^
如果索引已被数据占用,则假设阵列中有足够的容量,阵列应该移位以为新条目腾出空间。如果没有足够的容量,则应将阵列复制到新阵列,新阵列的容量应该是旧阵列的两倍。
另外,我不确定他们为什么不相容。我需要使用包装类吗?我想在这些代码行中说的是“将这个元素,无论是字符串,int,double还是char”放入数组的这个插槽中。
答案 0 :(得分:2)
您从未初始化变量copyArray。
答案 1 :(得分:1)
不应该是myArray[index] = element
吗?
答案 2 :(得分:1)
你得到的错误非常明显。 您不能使用除int或Integer之外的任何内容作为数组索引。
在您的代码中,您一定要使用
myArray[index] = element;
如果您想使用Java Object作为索引,您可能会阅读有关Map
s的内容。简而言之,Maps是数组,其中索引可以是任意类型(原始类型除外 - int,float等)。
答案 3 :(得分:0)
数组索引总是int,所以你不能说
copyArray [index] = copyArray [element];
它会失败,因为copyArray [element]意味着在没有意义的元素索引处的copyArray
答案 4 :(得分:0)
这对我没有意义。除了你试图使用一个对象作为数组索引整数“copyArray [element]”这是非法语法的事实,你也是从0到2 *循环数组的长度,然后尝试访问该数组在超出数组边界的索引处。通过用int替换该对象来修复“不兼容类型”错误时,只要调用此方法,就会开始获取ArrayOutOfBounds异常。
答案 5 :(得分:0)
当您尝试在给定索引处访问数组的对象时,您必须使用整数。
现在你正在使用一个没有意义的物体。想象一下,您调用此方法以及现在用户可以通过传递add(3,“cat”)来调用它的方式。
当你到达这一行时: copyArray [index] = copyArray [element];
你在copyArray [3]上说的是赋值copyArray [“cat”] ......什么?????
我认为你需要的是: copyArray [index] = element;
另一条线也一样。
copyArray未初始化:使用数组时,必须对其进行初始化,以便编译器知道它应分配多少内存。目前你有Object [] copyArray;您需要指定所需数组的长度,例如。 Object [] copyArray = new Object [10];