是否有更简单的方法来解码文本中的数字?

时间:2015-01-20 03:25:35

标签: java json string parsing numbers

以下代码来自我的Simplex JSON解码器

private Number decodeNumber() {
    int start = pos;
    boolean integer = true;
    while (buffer[pos++] != ',') {
        if (pos == buffer.length) {
            break;
        }
        if (buffer[pos] == '.') {
            integer = false;
        }
    }
    pos--;
    final String value = new String(buffer, start, pos - start);
    Number number;
    if (integer) {
        try {
            number = Integer.parseInt(value);
        } catch (final NumberFormatException e) {
            number = Long.parseLong(value);
        }
    } else {
        try {
            number = Float.parseFloat(value);
        } catch (final NumberFormatException e) {
            number = Double.parseDouble(value);
        }
    }
    return number;
}

决定数字的类型似乎很乏味,但我无法想到更好的方法。除了在值/抛出异常中寻找小数外,还有其他选择吗?

2 个答案:

答案 0 :(得分:0)

您可以使用NumberFormat的解析方法:

NumberFormat.getInstance().parse(value);

答案 1 :(得分:0)

摆脱初始扫描,然后按顺序尝试Integer.parseInt(), Float.parseFloat()Double.parseDouble(),,直到找不到NumberFormatException.