2014-09-21 87 views
-2

我有這個程序,並在主要方法中向鏈表中添加一個值。當我嘗試通過一個方法添加另一個值,該方法檢查以前添加的值是否在列表中時,它不會將該值識別爲列表中的值,並且如果它不在列表中,則執行該操作。爲什麼這個程序不能識別放入列表中的對象?該程序不能識別「h」已被添加到列表中。檢查一個對象是否包含在一個鏈接列表中

import java.util.LinkedList; 
import java.util.List; 


public class Menu { 
    LinkedList <LinkedList> mainMenuItems = new LinkedList <LinkedList>(); 


public void Menu(){ 

} 

public boolean addMainMenuItem(String newItem, String existingItem, int position){ 
    LinkedList <String> subMenuItems = new LinkedList <String>(); 
    if (! mainMenuItems.contains(existingItem)){ 
     subMenuItems.addLast(newItem); 
     mainMenuItems.add(subMenuItems); 
     return true;} 
    if (mainMenuItems.contains(existingItem)){ 
     subMenuItems.addLast(newItem); 
     int existingIndex = mainMenuItems.indexOf(existingItem); 
     if (position == 1){ 
    LinkedList temp = new LinkedList <LinkedList>(); 
    temp = mainMenuItems.get(existingIndex+1); 
    mainMenuItems.remove(existingIndex+1); 

    mainMenuItems.add(existingIndex + 1, subMenuItems); 
    mainMenuItems.add(existingIndex +2, temp); 

    } 


     if (position == -1){ 
      mainMenuItems.add(existingIndex, subMenuItems);} 
    return true; } 
    return false;} 


public boolean deleteMainMenuItem(String item){ 
    if (mainMenuItems.contains(mainMenuItems.indexOf(item))){ 
    mainMenuItems.remove(mainMenuItems.indexOf(item)); 
    return true;} 
    else{ 
    return false;}} 

public static void main(String[] args){ 
    Menu b = new Menu(); 
    b.addMainMenuItem("h", "b", 1) ; 

b.addMainMenuItem("hi", "h", 1) ; 
b.addMainMenuItem("i", "h", 1) ; 
System.out.println(b.mainMenuItems.get(0)); 
System.out.println(b.mainMenuItems.get(1)); 
b.deleteMainMenuItem("hi"); 
System.out.println(b.mainMenuItems.get(2)); 
System.out.println(b.deleteMainMenuItem("hi")); 


} 







} 
+0

-1表示格式不佳 – Basilevs 2014-09-21 05:03:59

+0

格式化的代碼非常難以閱讀。請考慮編輯您的帖子並修復縮進樣式,使其一致和一致。我通常避免使用製表符縮進(論壇軟件通常不能很好地使用製表符)並縮進每個代碼塊4個空格。在同一個塊中的代碼應該縮進一樣。並且你會想要給每個結束大括號,'''自己的線。 – 2014-09-21 05:04:01

回答

4

如果字符串由LinkedList<LinkedList>始終是假的,因爲一個字符串是不是同一類型的鏈表包含你正在測試。如果你真的需要測試這個,那麼你將不得不遍歷主LinkedList中的每個項目,並且測試String是否被任何一個項目持有。

相關問題