Как я могу позволить пользователю искать из односвязного списка в Java - PullRequest
0 голосов
/ 18 декабря 2018

Я завершил однократную ссылку, которая добавляет узлы в список из текстового файла.Теперь я пытаюсь позволить пользователю выбрать узел из связанного списка, чтобы либо проверить фильм, либо извлечь фильм из текстового файла.Я пытался понять это в течение очень долгого времени, но безуспешно.Любые вклады или помощь будут с благодарностью!

вот моя функция поиска, которая не завершена ...

    public void search () 
{
    System.out.print ("Which one would like like to check out: ");
    Scanner check = new Scanner(System.in);
    String usercheck = check.next();


    SinglyLinkedList myList = new SinglyLinkedList();
    Node n = myList.gethead();
    for (int i = 0; i < myList.getSize; i++) 
    {
        if (n.getTitle.equals(usercheck))
        {
            return ("found");
        } else {
            return n;
        }

    n = n.getNext();
    }
}

вот мой односвязный список, который я заполнил для ссылки на функцию поиска ...

public class SinglyLinkedList
{
    //Implement a Node
    private static class Node
    {
        private String[] actors;
        private String title;
        private String director;
        private String year;
        private int numActors;
        private String status;
        private String userID;
        private String date;

        private Node next;
        public Node(String e, Node n) 
        {
            String[] data = e.split(" ");
            title = data[0];
            director = data[1];
            year = data[2];
            numActors = Integer.parseInt(data[3]);
            actors = new String[numActors];

            int i = 0;

            for (i = 0; i < numActors; i++) 
            {
                actors[i] = data[4 + i];

            }

            status = data[4 + numActors];

            if (status.equals("out"))
            {
                userID = data[5 + numActors];
                date = data[6 + numActors];
            }



            next = n;
        }
        public int getNumActors()
        {
            return numActors;
        }
        public String gettitle() 
        {
            return title;
        }       
        public String[] getActors() 
        {
            return actors;
        }       
        public String getDirector() 
        {
            return director;
        }       
        public String getYear() 
        {
            return year;
        }       
        public String getStatus() 
        {
            return status;
        }       
        public String getUserID() 
        {
            return userID;
        }
        public String getDate() 
        {
            return date;
        }
        public Node getNext() 
        {
            return next;
        }
        public void setNext(Node n) 
        {
            next = n;
        }
    }

    //List Implementation
    private Node head = null;
    private Node tail = null;
    private int size = 0;
    public SinglyLinkedList() 
    {};
    public int getSize() 
    {
        return size;
    }
    public Node getHead()
    {
        return head;
    }
    public boolean isEmpty() 
    {
        return size == 0;
    }
    public String first() 
    {
        if(isEmpty()) 
        {
            return null;
        }
        return head.gettitle();
    }
    public String last() 
    {
        if(isEmpty()) 
        {
            return null;
        }
        return tail.gettitle();
    }
    public void addFirst(String e) 
    {
        head = new Node(e, head);
        if(size == 0) 
        {
            tail = head;
        }
        size++;
        System.out.println("Added head node with " + head.getDirector());
    }
    public void addLast(String e) 
    {
        Node newNode = new Node(e, null);
        if(isEmpty()) 
        {
            head = newNode;
        }else{
            tail.setNext(newNode);
        }
        tail = newNode;
        size++;
        System.out.println("Added tail node with " + tail.getDirector());   
    }
    public String removeFirst() 
    {
        if(isEmpty()) 
        {
            return null;
        }
        String answer = head.gettitle();
        head = head.getNext();
        size--;
        if(size == 0) 
        {
            tail = null;
        }
        System.out.println("Removed head node with " + answer);
        return answer;
    }
}

1 Ответ

0 голосов
/ 19 декабря 2018

Ваша SinglyLinkedList реализация в порядке, но есть несколько проблем в вашем search() методе.

Каждый раз, когда вы вызываете search(), вы создаете new SinglyLinkedList.Другими словами, вы не используете список, который вы ранее создали из вашего текстового файла.Передайте свой сгенерированный файл список в качестве параметра метода или сделайте этот список глобальной переменной для доступа к нему.

Кроме того, как прокомментировал другой пользователь, ваш поиск не будет компилироваться: вы использовали return ("found"), пока ваш методэто void.Поскольку вы хотите вернуть значение, чтобы пользователь знал, что это значение найдено, вы должны переписать свой метод следующим образом:

public String search()

String сообщает Java, что этот метод будетвозвращает String, в то время как void говорит Java не ожидать никакого значения после завершения.

...