我有以下程序,在运行时,我将打印3次菜单。我只期待一个并立即提示输入。
class whileexample2
{
public static void main(String args[]) throws java.io.IOException
{
char i;
int a = 100;
int b = 20;
do
{
System.out.println("select your choice");
System.out.println("---------------------");
System.out.println("(1) Additon");
System.out.println("(2) Subtraction");
System.out.println("(3) Multiplication");
System.out.println("(4) Division");
i = (char) System.in.read();
} while (i < '1' || i > '4');
System.out.println("\n");
switch(i)
{
case '1':
{
System.out.println("Result of addition is: " + (a + b));
break;
}
case '2':
{
System.out.println("Result of subtraction is: " + (a - b));
break;
}
case '3':
{
System.out.println("Result of multiplication is: " + (a * b));
break;
}
case '4':
{
System.out.println("Result of division is: " + (a / b));
break;
}
}
}
}
输出
选择您的选择
---------------------
(1)Additon
(2)减法
(3)乘法
(4)分部 7 //输入错误,再次显示菜单,但会打印3次 选择你的选择
---------------------
(1)Additon
(2)减法
(3)乘法
(4)分部 选择你的选择
---------------------
(1)Additon
(2)减法
(3)乘法
(4)分部 选择你的选择
---------------------
(1)Additon
(2)减法
(3)乘法
(4)分部 2减法结果为:80
答案 0 :(得分:2)
SPACE
此行导致您出现问题。您输入的不仅仅是此流中的数字,因为当您点击“Enter”时,您将向流中插入回车符,然后是换行符。这导致你的while循环经历三次,因为它正在读取的流包含字符'7''\ n'和'\ n'。
考虑使用扫描仪而只检查输入的第一个字符。扫描仪往往更可靠,与平台无关:
ENTER
答案 1 :(得分:0)
switch语句应该在Do-While循环中