У меня возникли проблемы с переносом объекта в связанный список. Вот код:Передача объекта из разных классов Java
if(runTypes[k]==EMPTY){
Empty creature = new Empty();
}
else if(runTypes[k]==FISH){
Fish creature = new Fish();
}
else if (runTypes[k]==SHARK){
Shark creature = new Shark(starveTime);
}
DLinkedList.insertEnd(creature,runLengths[k]);
Однако я получаю сообщение об ошибке:
RunLengthEncoding.java:89: cannot find symbol
symbol : variable creature
location: class RunLengthEncoding
DLinkedList.insertEnd(creature,runLengths[k]);
^
1 error
Empty() является супер класс для рыб и акул.
Вот код для метода insertEnd в циркулярно класса LinkedList:
public void insertEnd(Empty creature, int number) {
DListNode3 node = new DListNode3(creature);
head.prev.next = node;
node.next = head;
node.prev = head.prev;
head.prev=node;
node.amount = number;
size++;
}
А вот код для узла: общественного класса DListNode3 {
public Empty creature;
public DListNode3 prev;
public DListNode3 next;
public int amount;
DListNode3(Object creature) {
this.creature = creature;
this.amount = 1;
this.prev = null;
this.next= null;
}
DListNode3() {
this(null);
this.amount = 0;
}
}
Я не знаю, что делать, и я новичок в ООП. Любой совет?
Я думаю, вы столкнулись объем переменной задачи (HTTP [Что подразумевается под Scope переменной?]: //programmers.stackexchange. com/questions/141133/what-is-mean-by-scope-of-a-variable) – Smit
'creature' не работает, когда вы пытаетесь его использовать. Вам нужно объявить переменную за пределами 'if', а затем назначить ее в if. – gparyani
Как заявили другие, у вас есть проблема с объемом ваших переменных. Как только вы это поймете, обязательно проверьте, какие объекты вы хотите добавить в свой список. Похоже, вы хотите добавить объекты 'Empty',' Shark' и 'Fish'. Однако ваш метод 'insertEnd()' позволяет добавлять объекты 'Empty'. –