这个问题与switch语句有关。这是一些类似的帖子(如下),但我仍然无法理解。
Using user-inputted characters in If/Switch statements
How do I used a char as the case in a switch-case?
Multiple characters in a switch statement?
请考虑以下事项:
public class main
{
public int selection;
public main()
{
System.out.println("MENU");
Scanner in = new Scanner(System.in);
do {
showMenu();
selection = in.nextInt();
switch (selection)
{
case 1:
doSomething();
break;
case 2:
case 3:
default:
System.out.println("Instruction is invalid");
}
}
while (selection !=7);
{ System.exit(0); }
}
public static void showMenu()
{
System.out.print('\u000c');
System.out.println("option 1 \n");
System.out.println("option 2 \n");
System.out.println("7 - exit.\n");
System.out.println("Select Option:\n");
}
}
所以这是一个switch语句,供用户在do while循环中选择选项。用户从打印列表中输入一个整数来选择一个选项,在完成大小写后,它会循环回到菜单。
我的老师告诉我,更好的做法是使用char而不是int来获取交换机的用户输入。我希望它看起来像这样,但它不起作用,我不知道为什么。
public class main
{
public int selection;
public main()
{
System.out.println("MENU");
Scanner in = new Scanner(System.in);
do {
showMenu();
String menu = "";
char selection = menu.charAt();
switch (selection)
{
case 'A':
doSomething();
break;
case 2, 3, 4, 5, 6
default:
System.out.println("Instruction is invalid");
}
}
while (selection != 'QQ');
{ System.exit(0); }
}
在发布的第二个链接中,有一个我认为建议使用的答案 hello.charAt(0) 作为转换条件?
switch (hello.charAt(0))
{
case 'a': ... break;
}
我对此代码有三个具体问题:
1)我的代码不起作用。我的情况应该是hello.charAt(0)吗?
2)我想在交换机上使用QQ作为退出选项。可以使用上面的代码吗?从第二个链接,我认为应该没问题。
3)此处还显示(switch statement using char in the case condition?)case语句应该有双引号。也有人可以澄清一下吗?
答案 0 :(得分:1)
这样的事情会更好:
do {
showMenu();
String menu = in.nextLine(); // read a line of input
char selection;
if (menu.length>0) selection = menu.charAt(0); // extract the first char of the line read
else selection = '\0'; // special char when input is empty...
switch (selection) {
case 'A': case 'a':
doSomething();
break;
case 'Q': case 'q':
break;
default:
System.out.println("Instruction is invalid");
}
} while (selection != 'Q' && selection != 'q');
menu
存储完整的输入行。 selection
将是该行的第一个字符(如果存在)。
答案 1 :(得分:0)
要使用.charAt(),你需要提供索引 - 所以如果你想使用第一个字符,那么使用0等。
答案 2 :(得分:0)
一般来说,读一行而不是一次击键:
String的第一个字符是charAt(0)
获得的。但是字符串
可以有长度0.有if-expression CONDITION ? TRUEVALUE : FALSEVALUE
。
String menu = in.readLine();
char selection = menu.isEmpty() ? ' ' : menu.charAt(0);
switch (selection) {
case 'A':
doSomething();
break;
case '2':
case '3':
case '4':
...
break;
default:
System.out.println("Instruction is invalid");
}
还有更多的解决方案:
String menuSelection = in.readLine();
switch (menuSelection) {
case "A":
doSomething();
break;
case "2":
case "3":
case "4":
...
break;
default:
System.out.println("Instruction is invalid");
}