我有一个名为Entries
的类,它包含我的构造函数及其getter和setter。
在新课程中,我有:
private LinkedList<Entry>[] Entries = new LinkedList[26];
public void changeNumber(String number, String numberChange) {
for (int i = 0; i < myEntries.length; i++){
if (myEntries[i].getNumber().equals(number)){
myEntries[i].setNumber(numberChange);
break;
}
}
}
但是,我收到了我的安装者和吸气剂的错误。当我使用直线阵列或直线LinkedList
时,这不会发生,因为我已经让这个方法适用于两个不同类中的两个。
我收到的错误消息是
对于LinkedList类型,方法getNumber()未定义 并且类型为LinkedList
的方法getNumber()未定义
我不明白为什么他们是未定义的,因为当我尝试为直Array
和纯LinkedList
做同样的方法时,他们已经处理得很好并且运行正常。
如果有人有任何建议,我会非常感激。
答案 0 :(得分:2)
密切关注您正在迭代的数据类型。由于myEntries
被定义为LinkedList<Entry>[]
,因此当您遍历数组时,您将抽出一个LinkedList<Entry>
个。{/ p>
你似乎不想想要数组;相反,只是直接迭代列表元素:
LinkedList<Entry> myEntries = new LinkedList<>();
for(Entry entry : myEntries) {
if(entry.equals(number) {
// logic
}
}
答案 1 :(得分:1)
myEntries [i]返回一个LinkedList,它没有setNumber方法。您需要从列表中获取Entry,然后调用这些方法。
myEntries [I]获得(指数).setNumber();或myEntries [i] .getFirst()。setNumber();等
答案 2 :(得分:1)
您正试图在getNumber()
个实例上调用您的访问者/变更者(setNumber
&amp; LinkedList
),因为LinkedList
没有这样的方法报告错误。
因此要么使用LinkedList
方法访问某个get()
项,该方法将返回一个Entry
对象,您可以在其上调用您的setter和getter:
public void changeNumber(String number, String numberChange) {
int index = 0; //not sure what this index should be in your case
for (int i = 0; i < myEntries.length; i++){
if (myEntries[i].get(index).getNumber().equals(number)){
myEntries[i].get(index).setNumber(numberChange);
break;
}
}
}
或者更好的是,如果您不需要LinkedList
,可能值得放弃您的设计,只创建Array
Entry
:
private Entry[] entries = new Entry[26];
然后您的changeNumber()
方法符合条件:
public void changeNumber(String number, String numberChange) {
for (int i = 0; i < myEntries.length; i++){
if (myEntries[i].getNumber().equals(number)){
myEntries[i].setNumber(numberChange);
break;
}
}
}