2013-04-18 32 views
-1
public static String getSubMenu(String submenu){ 
     Scanner keyboard = new Scanner(System.in); 
     String chosen="", A="A",B="B", a="a", b="b"; 
     do{ 
     chosen = keyboard.next(); 
     keyboard.nextLine(); 
     System.out.print("\n\n"); 
     }while(chosen.compareTo(A)); 
     return chosen; 
    } 
    //This function below is fine. 
    public static void Menu(){ 
     String unem=""; 
     do{ 
     System.out.println("Sub Menu"); 
     System.out.println("Select an Option\n\n"); 
     System.out.println("a.Sort by name\n" +        
          "b.Sort by time\n" + 
          "c.Exit sub-menu\n\n"); 
     System.out.print("Input the number for the selected option: "); 
     unem= getSubMenu(unem); 
     if("a".equals(unem)|| "A".equals(unem)){ 

     } 
     if("b".equals(unem)|| "B".equals(unem)){ 

     } 
    }while ("a".equals(unem) ||"b".equals(unem) || "A".equals(unem) || "B".equals(unem)); 

    } 

} 

嗨,我想做一個子菜單。正如您在功能Menu中看到的那樣,當調用getSubMenu時,用戶必須在函數getSubMenu中輸入選定的選項。我通過看教材和在線和它似乎沒有,你可以爭論中使用char使用String/char創建子菜單?

char a="a"; 
if(a != b); 

如果您可以使用字符,而不是字符串上述功能,請告訴我們。

但繼續前進。我現在想要做的是讓getSubMenu返回一個包含'A' || 'a' || 'b' || 'B' || 'c' || 'C'的字符串,然後在用戶沒有將其中的任何一個作爲輸入時循環。我試過嘗試使用compareTo,但我收到Type mismatch: cannot convert from int to boolean error我該如何改進。我可以使用什麼語法,以便這可以工作。

感謝大家的幫助和貢獻。

編輯:新的工作職能

public static String getSubMenu(String submenu){ 
      Scanner keyboard = new Scanner(System.in); 
      boolean looped = true; 
      String chosen=""; 
      do{ 
      chosen = keyboard.next(); 
      keyboard.nextLine(); 
      System.out.print("\n\n"); 
      if("a".equals(option)|| "A".equals(option) || "b".equals(option)|| "B".equals(option) || "c".equals(option)|| "C".equals(option)){ 
       looped = false; 
      } 
      else 
       System.out.println("Wrong input"); 
      }while(looped); 
      return option; 

可能的沒有什麼,我瞄準了,但它仍然做到了工作。

+0

它應該是'char a ='a'',單引號! – NINCOMPOOP 2013-04-18 04:12:38

+0

啊我的不好:(對不起 – Daxter 2013-04-18 04:25:01

回答

1

while(chosen.compareTo(A))是你應該得到一個錯誤的地方。方法compareTo(String)返回int,您不能在while(boolean expression)中使用它,它需要一個布爾表達式,其值應爲truefalse。我粘貼用於參考的代碼,湊合它:

public static String getSubMenu(String submenu) { 
    Scanner keyboard = new Scanner(System.in); 
    List<String> list = Arrays.asList(new String[]{"A","B","C"}); 
    do { 
     chosen = keyboard.next(); 
     keyboard.nextLine(); 
     System.out.print("\n\n"); 
    } while (chosen!=null && list.contains(chosen.toUpperCase())); 
    return chosen; 
} 
+0

感謝,更有意義所以我可以看到爲什麼循環由於錯誤的變量而不能正常工作。 – Daxter 2013-04-18 04:24:39

0

compareTo()比較2個對象,並返回表示該對象是大於一個int。由於它不是布爾值,因此do while循環無法編譯。如果您正在尋找來自用戶的特定輸入,請使用此代碼段。

 do 
     { 
      chosen = keyboard.next(); 
      keyboard.nextLine(); 
      System.out.print("\n\n"); 
     } 
     while (!chosen.trim().equalsIgnoreCase("a")); 

你需要trim()字符串刪除空格一樣的字符,你可以使用equalsIgnoreCase()匹配「A」和「A」。