2015-11-22 2 views
1

Я продолжаю получать ошибку исключения при попытке вывода связанного списка.Показать связанный список: Ошибка исключения нулевого указателя

Я не получаю эту ошибку, когда я печатаю только имя условия, а пустое может проверить значение !!!? не уверен, почему?

Но когда я пытаюсь перебирать на протяжении всего моего связного списка, чтобы распечатать его, я получаю нулевую ошибку исключения

public class ItemLinkedList { 

    private ItemInfoNode head; 
    private ItemInfoNode tail; 
    private int size = 0; 

    public int getSize() { 
     return size; 
    } 

    public void addBack(ItemInfo info) { 
     size++; 
     if (head == null) { 
      head = new ItemInfoNode(info, null, null); 
      tail = head; 
     } else { 
      ItemInfoNode node = new ItemInfoNode(info, null, tail); 
      this.tail.next = node; 
      this.tail = node; 
     } 
    } 

    public ItemInfo removeFront() { 
     ItemInfo result = null; 
     if (head != null) { 
      size--; 
      result = head.info; 
      if (head.next != null) { 
       head.next.prev = null; 
       head = head.next; 
      } else { 
       head = null; 
       tail = null; 
      } 
     } 
     return result; 
    } 


    public static void main(String[] args) { 

     ItemLinkedList list = new ItemLinkedList(); 

     list.addBack(new ItemInfo("Bicipital Tendonitis", 1, 0, 1, 1)); 
     list.addBack(new ItemInfo("Coracoid Impingement", 0, 1, 1, 1)); 
     list.addBack(new ItemInfo("Supraspinatus Impingement", 1, 0, 0, 1)); 
     list.addBack(new ItemInfo("Bicipital Tendonitis", 1, 0, 1, 1)); 
     list.addBack(new ItemInfo("Glenohumeral Dislcation", 0, 0, 1, 1)); 
     list.addBack(new ItemInfo("Clavicular Fracture", 1, 0, 1, 0)); 
     list.addBack(new ItemInfo("Labral Tear", 1, 1, 0, 0));  
     list.addBack(new ItemInfo("SubAcromial Bursitis", 1, 0, 0, 0)); 


     while (list.getSize() > 0){ 

      System.out.println("Condition Name " + list.removeFront().getCondName()); 
      System.out.println("\t Empy Can Test: " + list.removeFront().getEmptyCanTest()); 
      System.out.println("\t Speed's Test: " + list.removeFront().getSpeedsTest()); 
      System.out.println("\t Apprehension Test: " + list.removeFront().getApprehensionTest()); 
      System.out.println("\t Pain Provocation Test: " + list.removeFront().getpainProvocationTest()); 
      System.out.println(); 
     } 

    } 
+0

Пожалуйста, ваши исключения StackTrace – Blip

ответ

1

вашего цикл чеков условия, что есть по крайней мере один элемент в списке, но тогда вам попробуйте удалить 5 элементов из списка.

Вы должны вызвать removeFront только один раз в каждой итерации:

 while (list.getSize() > 0){ 
     ItemInfo item = list.removeFront(); 
     System.out.println("Condition Name " + item.getCondName()); 
     System.out.println("\t Empy Can Test: " + item.getEmptyCanTest()); 
     System.out.println("\t Speed's Test: " + item.getSpeedsTest()); 
     System.out.println("\t Apprehension Test: " + item.getApprehensionTest()); 
     System.out.println("\t Pain Provocation Test: " + item.getpainProvocationTest()); 
     System.out.println(); 
    } 
Смежные вопросы