Java 使用字符串/字符创建子菜单?

Java 使用字符串/字符创建子菜单?,java,Java,嗨,我正在做一个子菜单。正如您在函数菜单中所看到的,当调用getSubMenu时,用户必须在函数getSubMenu中输入所选选项。我浏览了我的课本和在线,似乎你不能在参数中使用char,比如 public static String getSubMenu(String submenu){ Scanner keyboard = new Scanner(System.in); String chosen="", A="A",B="B", a="a", b="b";

嗨,我正在做一个子菜单。正如您在函数
菜单中所看到的,当调用
getSubMenu
时,用户必须在函数
getSubMenu
中输入所选选项。我浏览了我的课本和在线,似乎你不能在参数中使用
char
,比如

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));

    }

}
如果您可以在上述函数中使用字符而不是字符串,请告知

但是继续前进。我现在要做的是让
getSubMenu
返回一个字符串,该字符串包含
'a'| |'a'| |'b'| |'c'| |'c'
,然后在用户未将其中任何一个作为输入时循环。我尝试使用
compareTo
,但我收到
类型不匹配:无法从int转换为boolean错误
如何改进此问题。我可以使用什么样的语法使它可以工作

感谢所有对此提供帮助和贡献的人

编辑:新的工作功能

char a="a";
if(a != b); 
这可能不是我的目标,但它仍然起到了作用。

while(selected.compareTo(A))
是应该出现错误的地方。方法
compareTo(String)
返回一个
int
,您不能在
中使用它,而(布尔表达式)
,它需要一个布尔表达式,其计算结果应为
true
false
。我正在粘贴代码供参考,即兴创作:

  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;
公共静态字符串获取子菜单(字符串子菜单){
扫描仪键盘=新扫描仪(System.in);
List=Arrays.asList(新字符串[]{“A”、“B”、“C”});
做{
选择=键盘。下一步();
keyboard.nextLine();
系统输出打印(“\n\n”);
}while(selected!=null&&list.contains(selected.toUpperCase());
选择回报;
}
compareTo()
比较两个对象并返回一个表示哪个对象更大的int。因为它不是布尔值,所以当循环编译失败时,
执行操作。如果要查找用户的特定输入,请使用此代码段

 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;
}

您需要
trim()
字符串以删除空格等字符,并且可以使用
equalsIgnoreCase()
匹配“A”和“A”。

它应该是
char A='A'
,单引号!谢谢,这更有意义。所以我可以理解为什么循环由于变量错误而不能正常工作。
        do
        {
            chosen = keyboard.next();
            keyboard.nextLine();
            System.out.print("\n\n");
        }
        while (!chosen.trim().equalsIgnoreCase("a"));