如何使 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.

如果您不关心用户实际输入的内容(charString 等),只是他们没有输入 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();
        }
    }
}

抱歉,如果缩进有点偏差,我不知道为什么会这样。