繁体   English   中英

链表与迭代器

[英]Linked List With Iterator

大家。 我必须用某些成分做一个三明治,并且需要在链表的某些元素之间进行迭代以插入某些浇头。 我需要在代码的最后两个部分提供一些帮助,我必须在鸡肉和西红柿之间插入培根。 由于某些原因,培根出现在盐和面包2之间的尽头。 任何帮助将不胜感激。 感谢您的时间。

/*
 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);
  }

}

您有错字:

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

编辑:

分号会尽早关闭if语句。 这意味着lit.add("bacon"); 始终运行,无论if语句如何。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM