如果用户输入无效选项,我必须得到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;
}
}
答案 0 :(得分:2)
按Enter键时,会生成两个字符:回车符'\r'
和换行符'\n'
。并且System.in.read()
从输入中获取每个字符,因此您将获得三个字符,包括数字。
尝试使用扫描仪。它会标记您的输入,因此您不会收到那些空白字符。
java.util.Scanner input = new java.util.Scanner(System.in);
然后将您的choice
作业更改为以下内容:
choice = input.next().charAt(0);