2016-03-27 22 views
0

herkesle. Belirli malzemelerle bir sandviç yapmak zorundayım ve belirli toppings'leri eklemek için bağlantılı listenin bazı öğeleri arasında yinelemeye ihtiyacım var. Kodumun son iki bölümünde tavuk ve domates arasında pastırma koymam gereken yerlere biraz yardıma ihtiyacım var. Bazı sebeplerden ötürü, tuz ve Bread2 arasında en sonunda pastırma gösteriliyor. Herhangi bir yardım büyük takdir edilecektir. Zaman ayırdığın için teşekkürler.Bağlantılı Liste 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

Tek sorun bir dizini kullanamam. –

+0

Bağlandığım özel çözüme baktınız mı? –

cevap

0

Bir yazım hatası var:

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

DÜZENLEME:

virgül erken eğer deyimi kapatır. Bu, if ifadesinden bağımsız olarak lit.add("bacon");'un her zaman çalıştırıldığı anlamına gelir.

+0

Her zaman beni utandıran aptalca şeyler. Teşekkür ederim. Son kısımda, mesaj iletisindeki ifadeyi nasıl yazdırabilirim? Mesaj iletişim kutusunun neden gösterilmediğini bilmiyorum. –

+0

Ayrıca javax.swing'i de aldım. JOptionPane.showMessageDialog() ile aynı satırda, içe aktarmalarla (içe aktarma javax.swing. *; –

+0

?) döngü için gelişmiştim ama işe yaramadı. –