1

我正在寻找一个可以完成标题所说的功能。

我最终编写了解析每个字符的代码,然后创建了另一个字符串Double.parseDouble。这引发了StringIndexoutOfBounds异常。这显然不是要走的路。

代码块在这里

int i = 0;
char c = q.charAt(i);
if (Character.isDigit(c)) {
    try {
        String h = "" + c;
        while (Character.isDigit(c) || c == '.') {
            if (i == (q.length() - 1)) if (Character.isDigit(q.charAt(i + 1)) || (q.charAt(i + 1) == '.')) {
                Log.i("CalcApps", "within while");
                h += q.charAt(i + 1);
            }
            i++;
            c = q.charAt(i);
        }
        result = Double.parseDouble(h);
    } catch (Exception e) {
        Log.i("MyApps", "Index is out of bounds");
    }
}
4

2 回答 2

3

你会尝试这样的事情:

public static void main(String[] args) {
        String str = "dsde1121zszs.15szs"; 
        Double d = Double.valueOf(str.replaceAll("[^0-9\\.]", ""));
        System.out.println(d);
    }
于 2012-07-24T09:51:57.337 回答
0

您应该使用DecimalFormat并避免创建自己的解析器实现。有关一些示例,请参见此问题

于 2012-07-24T09:49:59.550 回答