Получите DIY Класс Связанного Списка, чтобы бросить исключение - PullRequest
0 голосов
/ 07 декабря 2018

Итак, я создал класс LinkedList с нуля.Мой метод append (Object o) добавляет объект в конец списка, prepend (Object o) добавляет объект в начало, а indexOf (Object o) возвращает индекс данного объекта.

Единственная вещь, которую я не могу заставить работать - это мой метод get (int i).Ну, это неверно.Работает нормально.Он возвращает объект по указанному индексу в списке, как я хочу.Единственная проблема заключается в том, что он не будет перехватывать исключения IndexOutOfBounds.

public class LinkedList {

    //node class
    public class Node {
        public Object data;
        public Node next;
        public Node (Object data) {
            this.data = data;
        }
    }

    //variables
    protected Node head;


    //after this is my append, prepend, etc methods but they aren't important


    public Object get(int index)    {
        if (index < 0)
        return null;

        Node current = null;

        try {
            if (head != null) {
                current = head.next;
                for (int i = 1; i < index; i++) {
                    if (current.next == null)   {
                        return null;
                    }
                    current = current.next;
                }
                if (current.data == null)   {
                    throw new IndexOutOfBoundsException();
                }
                else
                    return current.data;
            }
        }
        catch (IndexOutOfBoundsException e) {
            System.out.println("Warning: Index out of bounds");
        }
        return current;
    }

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

1 Ответ

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

Ваш цикл возвращается рано, потому что вы выполняете следующую проверку:

if(current.next == null) {
    return null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...