以下代码来自我的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;
}
决定数字的类型似乎很乏味,但我无法想到更好的方法。除了在值/抛出异常中寻找小数外,还有其他选择吗?
答案 0 :(得分:0)
您可以使用NumberFormat的解析方法:
NumberFormat.getInstance().parse(value);
答案 1 :(得分:0)
摆脱初始扫描,然后按顺序尝试Integer.parseInt(), Float.parseFloat()
和Double.parseDouble(),
,直到找不到NumberFormatException.