【问题标题】:Is there an easier way to decode a number from text than this?有没有比这更容易从文本中解码数字的方法?
【发布时间】:2015-01-20 03:25:34
【问题描述】:

以下代码来自我的单工 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;
}

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

【问题讨论】:

  • 请发布样本缓冲区输入字符串。

标签: java json string parsing numbers


【解决方案1】:

可以使用NumberFormat的parse方法:

NumberFormat.getInstance().parse(value);

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-12-16
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      • 2019-12-13
      • 1970-01-01
      • 2016-04-02
      • 2021-04-17
      • 1970-01-01
      相关资源
      最近更新 更多