当我输入1,2,3以外的错误输入时,我想实现此菜单以保持循环接收输入。如何以及在哪里放置我的while循环/ do while循环?我是JAVA的新人。
用户输入1,2或3以外的菜单后,应再次提示菜单。我可以知道吗?感谢。
如何以及在何处放置while循环/ do while循环?
import java.util.*;
public class InputMenu
{
public void display_menu()
{
System.out.println("1) Option 1\n2) Option 2\n3) Option 3");
System.out.print("Selection: ");
}
public void question()
{
System.out.println("Would you like to proceed or quit?");
System.out.println("To proceed enter 9.");
System.out.println("If you wish to quit enter 0.");
Scanner q = new Scanner(System.in);
switch (q.nextInt())
{
case 0:
System.out.println ("Thank you and goodbye.");
break;
case 9:
System.out.println ("Please proceed.");
new InputMenu();
break;
default:
System.err.println ( "Unrecognized option" );
reenter();
break;
}
}
public void reenter(){
System.out.println ("Please re-enter option from 1 - 3 only.");
display_menu();
}
public InputMenu()
{
Scanner in = new Scanner(System.in);
display_menu();
switch (in.nextInt())
{
case 1:
System.out.println ( "You picked option 1" );
question();
break;
case 2:
System.out.println ( "You picked option 2" );
question();
break;
case 3:
System.out.println ( "You picked option 3" );
question();
break;
default:
System.err.println ( "Unrecognized option" );
reenter();
break;
}
}
public static void main (String[]args)
{
new InputMenu();
}
}
答案 0 :(得分:0)
可以在您的构造函数
中public InputMenu()
{
Scanner in = new Scanner(System.in);
display_menu();
do{ //here
int input = in.nextInt();
switch (input)
{
case 1:
System.out.println ( "You picked option 1" );
question();
break;
case 2:
System.out.println ( "You picked option 2" );
question();
break;
case 3:
System.out.println ( "You picked option 3" );
question();
break;
default:
System.err.println ( "Unrecognized option" );
reenter();
}
}
while(input>3 || input <1); //here
}
答案 1 :(得分:0)
您可以使用以下代码输入valid
指定的整数。
public static int read(String hint, Scanner scanner, Integer... valid) {
System.out.print(hint);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
try {
int input = Integer.parseInt(line);
if (Arrays.asList(valid).contains(input))
return input;
} catch (NumberFormatException e) {}
System.out.print(hint);
}
return -1; // This is unreachable
}
然后你打电话
int selection = read("Selection: ", in, 1, 2, 3);