-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在诸如此类的论点中使用

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;

这可能不是我的目标,但它仍然发挥了作用。

4

2 回答 2

1

while(chosen.compareTo(A)) is where you should get an error . The method compareTo(String) returns an int which you cannot use in while(boolean expression) , it requires a boolean expression which shall evaluate to true or false. I am pasting a code for reference , improvise on it :

 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;
}
于 2013-04-18T04:15:56.823 回答
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”。

于 2013-04-18T04:30:02.957 回答