sort double存储为字符串?

时间:2011-09-02 09:14:33

标签: java string sorting

嗨有没有办法将字符串解析为数字?有没有办法在不破坏程序的情况下检查字符串是否为数字?我正在考虑尝试并抓住这会是一个好主意吗?

5 个答案:

答案 0 :(得分:4)

如果没有尝试解析字符串,就无法检查字符串是否可解析(因为任何检查都必须开始尝试将字符串解释为数字来执行该操作...)。对于中途检查,我猜你可以使用正则表达式检查字符串是否只有数字和句点。不过,你还必须使用try ... catch块。

关于如何将字符串解析为double,请尝试:

double dd;
try {
    dd = Double.parseDouble(string);
}
catch (NumberFormatException e) {
    System.out.println("couldnt not parse the string!");
}

答案 1 :(得分:3)

是。如果您的字符串无法解析为Double,则Double.valueOf(String s)将抛出NumberFormatException,否则返回已解析的Double。

答案 2 :(得分:1)

我假设您要使用其中一种内置排序方法进行排序。在这种情况下,您需要创建一个自定义Comparator<T>,实现compare()equals()尝试将字符串解析为Double,并在捕获异常时实现一些理智的默认行为。确保在方法中捕获异常 - 如果让异常进入Java API代码,则应该遇到问题。

作为让你前进的简单例子:

class DoubleStringComparator implements Comparator<String> {

    public int compare(String o1, String o2) {
        try {
            double d1 = Double.parse(o1);
            double d2 = Double.parse(d2);
            if d1 > d2 {
                return 1;
            } else if d1 < d2 {
                return -1;
            else {
                return 0;
            }
        } catch (NumberFormatException e) {
            // whatever ordering you want to impose when one string is not a double
        }
    }

    // some definition of equals() - whatever makes sense for your application

}

然后,当你想进行排序时:

Collections.sort(someListOfString, new DoubleStringComparator());

答案 3 :(得分:0)

看看parseDouble

http://download.oracle.com/javase/6/docs/api/java/lang/Double.html#parseDouble%28java.lang.String%29

并且是的,您可以捕获NumberFormatException以确定数字何时无效。

答案 4 :(得分:0)

您可以使用正则表达式来查找字符串是否为双倍

if(num1.matches(("((-|\\+)?[0-9]+(\\.[0-9]+)?)+"))){
    isDoubleVal =true;                  
}else{
    isDoubleVal = false;
}

希望它对你有所帮助。

此致 LAV