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;
这可能不是我的目标,但它仍然可以完成它。
答案 0 :(得分:1)
while(chosen.compareTo(A))
是您应该收到错误的地方。方法compareTo(String)
返回int
,您无法在while(boolean expression)
中使用它,它需要一个布尔表达式,该表达式将计算为true
或false
。我正在粘贴代码以供参考,即兴发布:
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;
}
答案 1 :(得分: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”。