1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

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

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

  1. broboa

    broboa New Member

    Репутация:
    0
    Регистрация:
    30 сен 2012
    Сообщения:
    2
    Симпатии:
    0
    Доброго всем времени суток! У меня возникла проблема. Уже почти сутки пытаюсь найти ошибку в своем коде. Ошибка связана с методом 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();
    
    }
    }
    }
     
  2. hosm

    hosm * so what *

    Репутация:
    0
    Регистрация:
    18 май 2009
    Сообщения:
    2.442
    Симпатии:
    9
    если не нашли, то надо "переместиться" на следующий элемент (а не просто "в пустоту" вызвать геттер, возвращающий следующий элемент), т.е. надо marker = marker.getNext();
     
Загрузка...
Похожие Темы - Linked List Не
  1. DarkVss
    Ответов:
    2
    Просмотров:
    1.805
  2. John Wicked
    Ответов:
    0
    Просмотров:
    34
  3. wowa
    Ответов:
    23
    Просмотров:
    1.973
  4. DavidZizu
    Ответов:
    2
    Просмотров:
    1.332
  5. DavidZizu
    Ответов:
    0
    Просмотров:
    1.069

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