Linked List. Не Могу Найти Ошибку В Коде:(

broboa

New Member
30.09.2012
2
0
#1
Доброго всем времени суток! У меня возникла проблема. Уже почти сутки пытаюсь найти ошибку в своем коде. Ошибка связана с методом find1 он почему то не может найти строку. Если ввести в поиск первую строчку(последнюю введенную) в листе, то он находит. Но если любу. другую, то он без перерыва включает marker.getNext(); и уже не видет одинаковое ли id с введеным или нет. Может кто-нибудь сможет помочь? А то я уже все перерыл Заранее огромное спасибо!
Код:
public class ListNode	
{
// instance variables
private String student;
private int mark;
public ListNode next;

public ListNode(String student, int mark)
{
// initialise instance variables
this.student = student;
this.mark = mark;
this.next = null;
}


public ListNode getNext()
{
return next;
}

public String getStudent()
{
return student;
}

public int getMark()
{
return mark;
}


public void setNext(ListNode next)
{
this.next = next;
}


public String formatInfo()
{
String info;

info = "Student " + student + " got " + mark + "%";

return info;
}

public void printListNode()
{
System.out.println("Student " + student + ", " + mark + "% ");
}
}


public class List 
{
public ListNode head;

public List()
{

head = null;
}


public ListNode getHead()
{
return head;
}


public void setHead(ListNode newHead)
{
head = newHead;
}


public void addToList(String student, int mark)
{
ListNode marker;
ListNode newOne;

newOne = new ListNode(student, mark);		
newOne.setNext(head);

head = newOne;

}

public void find1(String oneWanted)
{
// System.out.println("add students name you want to find");
ListNode marker=head;
ListNode foundNode=null;
System.out.println("test1");
while((marker!=null)&&(foundNode==null)) 
{
System.out.println("test2");
//oneWanted.equals(marker.getStudent());
if (oneWanted.equals(marker.getStudent())) 
{
System.out.println("test3");
System.out.println("Student is found");
foundNode=marker;
System.out.println();

}
else if (!oneWanted.equals(marker.getStudent()))
{
System.out.println("test4");
marker.getNext();

}
}
}

public ListNode delete() {
ListNode temp = head;
head = head.next;
return temp;
}

public void printOne() 
{
ListNode currentLink = head;
System.out.print("ListNode: ");

currentLink.printListNode();

System.out.println("");
}

public void printList() 
{
ListNode currentLink = head;
System.out.print("ListNode: ");
while(currentLink != null) 
{
currentLink.printListNode();
currentLink = currentLink.next;
}
System.out.println("");
}
}

public class Tester
{

// Need a variable of type List
public List myList; 
public String student;
public int mark;
public ListNode findOut;

public Tester()
{
myList = new List();

}

public void print()
{
myList.printList();
}

public void search()
{
System.out.println("add students name you want to find");
String oneWanted=Genio.getString();
myList.find1(oneWanted);
System.out.println("testing");
}

public void menu()
{
int x;

System.out.println("Adding students. If you want to stop adding, press stop.");
System.out.println("Please insert student id: ");
student = Genio.getString();
do{
System.out.println("Please insert student mark: ");
mark = Genio.getInteger();

myList.addToList(student, mark);
System.out.println("Student added.");

System.out.println("Please insert student id: ");
student = Genio.getString();
}while(!student.equals ("0"));

myList.printList();

System.out.println("You can choose what to do next. If you want to add students, press 1.");
x = Genio.getInteger();

if (x==1)
{
addInfo();
myList.printList();
}

if (x==2)
{
search();
myList.printOne();

}
}
}
 

hosm

* so what *
18.05.2009
2 442
9
#2
если не нашли, то надо "переместиться" на следующий элемент (а не просто "в пустоту" вызвать геттер, возвращающий следующий элемент), т.е. надо marker = marker.getNext();