while循环以cmd显示内容3次

时间:2016-12-13 14:48:44

标签: java

我有以下程序,在运行时,我将打印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

2 个答案:

答案 0 :(得分:2)

SPACE

此行导致您出现问题。您输入的不仅仅是此流中的数字,因为当您点击“Enter”时,您将向流中插入回车符,然后是换行符。这导致你的while循环经历三次,因为它正在读取的流包含字符'7''\ n'和'\ n'。

考虑使用扫描仪而只检查输入的第一个字符。扫描仪往往更可靠,与平台无关:

ENTER

答案 1 :(得分:0)

switch语句应该在Do-While循环中