B
broboa
Доброго всем времени суток! У меня возникла проблема. Уже почти сутки пытаюсь найти ошибку в своем коде. Ошибка связана с методом 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();
}
}
}