如何确定 Java 中的数字数据类型?

How to determine numeric Data Type in Java?

我想知道用户输入的是 char 还是 int,因此根据数据类型采取不同的操作过程。

您可以将行读取为 String,然后使用正则表达式检查字符串。例如,如果您正在阅读 stdin

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));

String inputString = bufferedReader.readLine();

String doubleRegex = "[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?";
String integerRegex = "[-+]?[0-9]+";

if (inputString.matches(integerRegex)) {
    System.out.println("integer");
} else
if (inputString.matches(doubleRegex)) {
    System.out.println("double");
} else {
    // Error inputted string can't be parsed
}

尝试java标准解析器:

public static void main(String[] args) throws IOException {

    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
    String inputString = bufferedReader.readLine();
    Integer integerValue = getIntegerValueOf(inputString);
    if (integerValue == null) {
        Double doubleValue = getDoubleValueOf(inputString);
        if (doubleValue == null) {
            System.out.println("I don't know");
        } else {
            System.out.println("Congratulation, it's a double : " + doubleValue);
        }
    } else {
        System.out.println("Congratulation, it's a integer : " + integerValue);
    }

}

private static Integer getIntegerValueOf(String inputString) {
    try {
        return Integer.parseInt(inputString);
    } catch (NumberFormatException e) {
        return null;
    }
}

private static Double getDoubleValueOf(String inputString) {
    try {
        return Double.parseDouble(inputString);
    } catch (NumberFormatException e) {
        return null;
    }
}