做多次运行时

时间:2015-01-19 18:11:46

标签: java do-while

如果用户输入无效选项,我必须得到1到3个答案,而应该重新运行但问题是它重新运行了三次。就像我在1到3中给出答案一样,在其他数字上给出正确的结果,它会重新打印三次。

char choice;
public void mainMartfunc() throws java.io.IOException{

        do{
            System.out.println("Login as:");
            System.out.println("    1. Customer");
            System.out.println("    2. Employee");
            System.out.println("    3. Owner");
            choice = (char) System.in.read();
            } while(choice < '1' || choice>'3');
        switch(choice){

         case '1':
             System.out.println("\tCustomer Menu:");
             break;

         case '2':
             System.out.println("\tEmployee Menu:");
             break;

         case '3':
            System.out.println("\tOwner Menu:");
            break;
        }
}

1 个答案:

答案 0 :(得分:2)

按Enter键时,会生成两个字符:回车符'\r'和换行符'\n'。并且System.in.read()从输入中获取每个字符,因此您将获得三个字符,包括数字。

尝试使用扫描仪。它会标记您的输入,因此您不会收到那些空白字符。

java.util.Scanner input = new java.util.Scanner(System.in);

然后将您的choice作业更改为以下内容:

choice = input.next().charAt(0);