如何检查用户输入是否为单个字符

How do you check if the user input is a single Char

提问人:Prago 提问时间:5/6/2022 最后编辑:dani-vtaPrago 更新时间:5/6/2022 访问量:945

问:

我正在尝试编写一个程序,如果用户输入单个字符,程序将在屏幕上显示 True,否则如果输入多个字符,则会打印 False。

public class FinalExamTakeHome8 {
    public static void main(String[] args) {
        try (Scanner kbd = new Scanner(System.in)) {
            System.out.println("Enter an item");
            if (kbd.hasNextInt() || kbd.hasNextChar() || kbd.hasNextDouble()) {
                System.out.println("True");
            } else {
                System.out.println("False");
            }
        }
    }
}
输入 字符 java.util.scanner

评论

2赞 Karl Knechtel 5/6/2022
您是否尝试检查是否有多个字符可以读取(也许通过尝试这样做),并颠倒逻辑?另外:您应该确保了解类如何与标准输入的行缓冲交互。Scanner
0赞 DevilsHnd - 退した 5/6/2022
String input = kbd.nextLine(); System.out.println(input.matches(".{1}"));.

答:

2赞 dani-vta 5/6/2022 #1

您可以使用该方法读取用户输入,而不管是一个或多个字符。然后,获取文本后,检查其长度是否等于 1。nextLine()

public static void main(String[] args) {
    try (Scanner kbd = new Scanner(System.in)) {
        System.out.println("Enter an item");
        String input = kbd.nextLine();
        if (input.length() == 1) {
            System.out.println("True");
        } else {
            System.out.println("False");
        }
    }
}

编辑:由于某种原因,它没有将链接正确地合并到文本中。我将在此处保留指向扫描仪文档的链接:

https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextLine()

1赞 jimboweb 5/6/2022 #2

您可以使用该方法获取字符串,然后只需使用该方法来测量大小。scanner.nextLine()length()

String line = kbd.nextLine();
System.out.println(line.length()==1); 

因为比较将产生布尔值,所以你可以直接打印它。

1赞 Shubham Saraswat 5/6/2022 #3

没有专用的 API 来检查用户是否输入了单个字符,但可以使用正则表达式。我已经对其进行了测试,并且对于您的用例来说运行良好。

public static void main(String[] args) {
    try (Scanner kbd = new Scanner(System.in)) {
        System.out.println("Enter an item");
        if (kbd.hasNextInt() || kbd.hasNext("^[a-zA-Z]") || kbd.hasNextDouble()) {
            System.out.println("True");
        } else {
            System.out.println("False");
        }
    }
}