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

问题描述 投票:0回答:3

我正在尝试编写一个程序,如果用户输入单个字符,则程序在屏幕上显示 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 input char java.util.scanner
3个回答
3
投票

您可以使用

nextLine()
方法来读取用户输入,无论是一个还是多个字符。然后,获取文本后,检查其长度是否等于 1。

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");
        }
    }
}

1
投票

您可以使用

scanner.nextLine()
方法获取字符串,然后使用
length()
方法测量大小。

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

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


1
投票

没有专门的 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");
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.