2016-03-27 4 views
0

все. Я должен сделать бутерброд с определенными ингредиентами и выполнить итерацию между некоторыми элементами связанного списка, чтобы вставить определенные начинки. Мне нужна помощь в последних двух частях моего кода, где мне нужно вставить бекон между курицей и томатом. По какой-то причине бекон появляется в самом конце между солью и хлебом2. Любая помощь будет принята с благодарностью. Спасибо за ваше время.Связанный список с Iterator

/* 
Programmer: Yamin Mousselli 
Date: 03/27/2016 
Purpose: Demonstrate Use and Knowledge of LinkedList and Iterator. You CAN'T use an index number for inserting elements into 
linked list. You must only use the list iterator. Submit one java file only. 
*/ 
import java.util.List; 
import java.util.LinkedList; 
import java.util.ListIterator; 

public class LinkedListDemo { 
    public static void main(String[] args) 
    { 

    List<String> myLinkedList = new LinkedList<String>(); 

    String strOutput=""; 

    //BUILD THE SANDWICH 

    myLinkedList.add("Bread1"); 
    myLinkedList.add("mustard"); 
    myLinkedList.add("lettuce"); 
    myLinkedList.add("chicken"); 
    myLinkedList.add("tomato"); 
    myLinkedList.add("Bread2"); 

    ListIterator<String> lit = myLinkedList.listIterator(); 

    while(lit.hasNext()) 
    { 
     strOutput += (lit.next().toString() + ",") ; 
    } 
    strOutput +=("You have reached the end of the sandwich.\n"); 


    //SHOW THE CURRENT SANDWICH IN REVERSE USING "PREVIOUS()" METHOD 
    while(lit.hasPrevious()) 
    { 
     strOutput += (lit.previous().toString() + ","); 
    } 
    strOutput +=("You have reached the end of the sandwich.\n"); 


    //ADD PICKLES BETWEEN LETTUCE AND CHICKEN 
    while(lit.hasNext()) 
    { 
     if(lit.next().toString().equals("lettuce")) 
     { 
      lit.add("pickles"); 
      break; 
     } 
    } 

    while(lit.hasPrevious()) 
    { 
     lit.previous(); 
    } 

    while(lit.hasNext()) 
    { 
     strOutput += (lit.next().toString() + ",") ; 
    } 
    strOutput +=("You have reached the end of the sandwich.\n"); 


    //ADD CHEESE BETWEEN TOMATO AND BREAD2 
    while(lit.hasPrevious()) 
    { 
     if(lit.previous().toString().equals("Bread2")) 
     { 
      lit.add("cheese"); 
      break; 
     } 
    } 

    while(lit.hasPrevious()) 
    { 
     lit.previous(); 
    } 

    while(lit.hasNext()) 
    { 
     strOutput += (lit.next().toString() + ","); 
    } 
    strOutput += ("You have the reached the end of the sandwich.\n"); 


    //ADD SALT BETWEEN CHEESE AND BREAD2 
    while(lit.hasPrevious()) 
    { 
     if(lit.previous().toString().equals("Bread2")) 
     { 
      lit.add("salt"); 
      break; 
     } 
    } 

    while(lit.hasPrevious()) 
    { 
     lit.previous(); 
    } 

    while(lit.hasNext()) 
    { 
     strOutput += (lit.next().toString() + ","); 
    } 
    strOutput += ("You have the reached the end of the sandwich.\n"); 


    //GO BACKWARDS AND INSERT BACON BETWEEN CHICKEN AND TOMATO 
    while(lit.hasPrevious())  
    { 
     if(lit.previous().toString().equals("chicken")); 
     { 
      lit.add("bacon"); 
      break; 
     } 
    } 

    while(lit.hasPrevious()) 
    { 
     lit.previous(); 
    } 

    while(lit.hasNext()) 
    { 
     strOutput += (lit.next().toString() + ","); 
    } 
    strOutput += ("You have the reached the end of the sandwich.\n"); 


    //SHOW FINAL SANDWICH IN FORWARD ORDER 

    javax.swing.JOptionPane.showMessageDialog(null, strOutput); 
    System.exit(0); 
    } 

} 
+0

http://stackoverflow.com/a/19614083/2055998 –

+0

Проблема только в том, что я не могу использовать индекс. –

+0

Вы посмотрели на конкретное решение, с которым я связался? –

ответ

0

У вас есть опечатка:

if(lit.previous().toString().equals("chicken")); // <-- semi-colon 
    { 
     lit.add("bacon"); 
     break; 
    } 

EDIT:

с запятой закрывает, если заявление рано. Это означает, что lit.add("bacon"); всегда запускается независимо от оператора if.

+0

Это всегда глупые вещи, которые меня достают. Спасибо. В последней части, как распечатать заявление в диалоговом окне сообщения? Я не знаю, почему диалоговое окно сообщения не отображается. –

+0

Я также взял javax.swing. в той же строке JOptionPane.showMessageDialog(), наверху с импортом (import javax.swing. *; –

+0

? Я использовал расширенный цикл, но он не работал, –