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