如何使 Java 中的字符输入无效?
How do I invalidate a char input in Java?
这非常简单,但我是 Java 编程语言的新手,一些指导会有所帮助。我正在制作一个列出选项的菜单。但是,我希望用户可以输入一个字符作为选项来获取像这里这样的文本,然后 return 用户再次选择。
我通过混淆大小写和默认值来显示错误。
import java.util.Scanner;
public class selectMenu {
public static void main(String[] args) {
System.out.println("select your option:");
System.out.println("1) showing today menu");
System.out.println("2) showing tomorrow menu");
int op = scanner.nextInt();
switch(op) {
case 1 -> System.out.println("TODAY MENU");
case 2 -> System.out.println("TOMORROW MENU");
case 3 ->
if (option==char) {
System.out.println("This is an invalid option.");
}
default -> System.out.println("Opcion invalida.");
}
}
您可以尝试这样做:
import java.util.Scanner;
public class selectMenu
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
menu: while(true)
{
System.out.println("select your option:");
System.out.println("1) showing today menu");
System.out.println("2) showing tomorrow menu");
String op = in.nextLine();
switch(op)
{
case "1":
System.out.println("TODAY MENU");
break menu;
case "2":
System.out.println("TOMORROW MENU");
break menu;
default:
try
{
Integer.parseInt(op);
System.out.println("You typed an int but it isn't 1 or 2");
}
catch(NumberFormatException e)
{
if(op.length() > 1) System.out.println("You typed a String");
else System.out.println("You typed a char");
}
break;
}
}
}
}
它取下一行而不是 nextInt()(如果它不是数字将抛出异常),检查答案是 "1"
还是 "2"
,然后检查它是否是有效 int
(“3”、“4”等)。如果不是,它会检查长度,如果长度为 1,它会告诉您它是 char
,否则是 String
.
如果您不关心用户实际输入的内容(char
、String
等),只是他们没有输入 int,您可以移动 try
-catch
左右扫描仪输入:
import java.util.Scanner;
public class selectMenu
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
menu: while(true)
{
System.out.println("select your option:");
System.out.println("1) showing today menu");
System.out.println("2) showing tomorrow menu");
try
{
int op = in.nextInt();
switch(op)
{
case 1:
System.out.println("TODAY MENU");
break menu;
case 2:
System.out.println("TOMORROW MENU");
break menu;
default:
System.out.println("int input, but not 1 or 2");
}
}
catch(java.util.InputMismatchException e)
{
System.out.println("non-int input");
}
in.nextLine();
}
}
}
抱歉,如果缩进有点偏差,我不知道为什么会这样。
这非常简单,但我是 Java 编程语言的新手,一些指导会有所帮助。我正在制作一个列出选项的菜单。但是,我希望用户可以输入一个字符作为选项来获取像这里这样的文本,然后 return 用户再次选择。
我通过混淆大小写和默认值来显示错误。
import java.util.Scanner;
public class selectMenu {
public static void main(String[] args) {
System.out.println("select your option:");
System.out.println("1) showing today menu");
System.out.println("2) showing tomorrow menu");
int op = scanner.nextInt();
switch(op) {
case 1 -> System.out.println("TODAY MENU");
case 2 -> System.out.println("TOMORROW MENU");
case 3 ->
if (option==char) {
System.out.println("This is an invalid option.");
}
default -> System.out.println("Opcion invalida.");
}
}
您可以尝试这样做:
import java.util.Scanner;
public class selectMenu
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
menu: while(true)
{
System.out.println("select your option:");
System.out.println("1) showing today menu");
System.out.println("2) showing tomorrow menu");
String op = in.nextLine();
switch(op)
{
case "1":
System.out.println("TODAY MENU");
break menu;
case "2":
System.out.println("TOMORROW MENU");
break menu;
default:
try
{
Integer.parseInt(op);
System.out.println("You typed an int but it isn't 1 or 2");
}
catch(NumberFormatException e)
{
if(op.length() > 1) System.out.println("You typed a String");
else System.out.println("You typed a char");
}
break;
}
}
}
}
它取下一行而不是 nextInt()(如果它不是数字将抛出异常),检查答案是 "1"
还是 "2"
,然后检查它是否是有效 int
(“3”、“4”等)。如果不是,它会检查长度,如果长度为 1,它会告诉您它是 char
,否则是 String
.
如果您不关心用户实际输入的内容(char
、String
等),只是他们没有输入 int,您可以移动 try
-catch
左右扫描仪输入:
import java.util.Scanner;
public class selectMenu
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
menu: while(true)
{
System.out.println("select your option:");
System.out.println("1) showing today menu");
System.out.println("2) showing tomorrow menu");
try
{
int op = in.nextInt();
switch(op)
{
case 1:
System.out.println("TODAY MENU");
break menu;
case 2:
System.out.println("TOMORROW MENU");
break menu;
default:
System.out.println("int input, but not 1 or 2");
}
}
catch(java.util.InputMismatchException e)
{
System.out.println("non-int input");
}
in.nextLine();
}
}
}
抱歉,如果缩进有点偏差,我不知道为什么会这样。