【发布时间】:2018-03-22 20:06:24
【问题描述】:
我想用这个方法把一个字符串解析成十进制
try {
Double.parseDouble(str);
} catch (Exception exception) {
exception.printStackTrace();
}
如果我在 EditText 中输入任何字母或数字后跟一个字母(到目前为止一切顺利),它会引发异常,但是当我输入一个数字后跟字母 d 或 f(例如 2.1 或 2.1f)时,它不会抛出异常。该方法将 2.1d 字符串或 2.1f 字符串视为 2.1float 或 2.1double 并将双精度值返回为 2.1d 或 2.1f 并且程序崩溃。 我还尝试使用以下方法解析字符串:
NumberFormat.getInstance().parse(str);
Double.valueOf(str);
Double doubleObject = new Double(str);
double number = doubleObject.doubleValue();
StringUtils.isNumeric(str);
结果是一样的。
最后我用if(str.contains(d)||str.contains(f))throw new Exception(...)做到了
是否有其他方法或其他方法可以在不使用 if 的情况下执行此操作。
【问题讨论】:
-
听起来像是正则表达式的工作!
-
如果您只想输入数字,请在 xml 中添加输入类型为数字
-
可能不是很整齐,但如果只是这2个字母有问题,那么利用替换功能将'f'和'd'替换为“”