Это происходит потому, что объекты существуют только внутри блока, в котором они объявлены. В вашем случае ваш front3
будет существовать только внутри блока if
, который вы использовали для его объявления:
if (ptr3 == null) {
Node front3 = new Node(ptr2.term.coeff, ptr2.term.degree,null);
ptr3 = front3; // Can use it here
}
// Cannot use it here
Если вам действительно нужно вернуть объект front3
, вы должны объявить его на «уровне метода», так же, как вы делаете для своих узлов ptr
. На самом деле, вы уже прокомментировали это там. Если вы просто примените изменения, как указано ниже, вам будет хорошо:
Ток:
// Node front3;
После того, как:
Node front3 = null; // Needs to initialize
И ваши if
операторы должны быть изменены, как показано в примере ниже:
Ток:
if (ptr3 == null) {
Node front3 = new Node(ptr1.term.coeff,ptr1.term.degree,null);
ptr3 = front3;
}
* * После того, как тысяча двадцать-одиной: * * тысяча двадцать-дв
if (ptr3 == null) {
front3 = new Node(ptr1.term.coeff,ptr1.term.degree,null); // No need for "Node", as it was already declared
ptr3 = front3;
}
Ps. Я не пересматривал логику. Это просто, чтобы объяснить, почему вы получаете «Имя переменной не может быть преобразовано в переменную» error.