【问题标题】:How to determine numeric Data Type in Java?如何确定 Java 中的数字数据类型?
【发布时间】:2018-11-30 15:06:31
【问题描述】:

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

【问题讨论】:

  • 没有简单的方法,您必须自己解析输入字符串。 (这本身可能很棘手——假设 int 或 double 后面没有任何内容,您应该寻找小数点 . 或科学记数法 eE
  • 用户输入始终是String。您可以尝试为不同的数据类型解析它,并处理可以解析的第一个。
  • 正如@daniu所说,用户输入始终是字符串

标签: java types int double metadatatype


【解决方案1】:

您可以将行读取为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
}

【讨论】:

    【解决方案2】:

    试试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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-24
      • 1970-01-01
      相关资源
      最近更新 更多