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

Тема в разделе "Java", создана пользователем broboa, 19 янв 2013.

  1. broboa

    broboa New Member

    Регистрация:
    30 сен 2012
    Сообщения:
    2
    Симпатии:
    0
    Доброго всем времени суток! У меня возникла проблема. Уже почти сутки пытаюсь найти ошибку в своем коде. Ошибка связана с методом find1 он почему то не может найти строку. Если ввести в поиск первую строчку(последнюю введенную) в листе, то он находит. Но если любу. другую, то он без перерыва включает marker.getNext(); и уже не видет одинаковое ли id с введеным или нет. Может кто-нибудь сможет помочь? А то я уже все перерыл Заранее огромное спасибо!
    Код (Text):
    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();

    }
    }
    }
     
  2. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    если не нашли, то надо "переместиться" на следующий элемент (а не просто "в пустоту" вызвать геттер, возвращающий следующий элемент), т.е. надо marker = marker.getNext();
     
Загрузка...
Похожие Темы - Linked List Не
  1. DarkVss
    Ответов:
    2
    Просмотров:
    1.704
  2. wowa
    Ответов:
    23
    Просмотров:
    1.606
  3. DavidZizu
    Ответов:
    2
    Просмотров:
    1.245
  4. DavidZizu
    Ответов:
    0
    Просмотров:
    989
  5. proteam
    Ответов:
    7
    Просмотров:
    114

Поделиться этой страницей