数量翻倍

时间:2013-05-13 06:05:35

标签: java double type-conversion type-mismatch

如何在Java中将Double转换为Number,如下面的代码所示?

public Number parse(String text, ParsePosition status) {
    // find the best number (defined as the one with the longest parse)
    int start = status.index;
    int furthest = start;
    double bestNumber = Double.NaN;
    double tempNumber = 0.0;
    for (int i = 0; i < choiceFormats.length; ++i) {
        String tempString = choiceFormats[i];
        if (Misc.regionMatches(start, tempString, 0, tempString.length(), text)) {
            status.index = start + tempString.length();
            tempNumber = choiceLimits[i];
            if (status.index > furthest) {
                furthest = status.index;
                bestNumber = tempNumber;
                if (furthest == text.length()) break;
            }
        }
    }
    status.index = furthest;
    if (status.index == start) {
        status.errorIndex = furthest;
    }
    int c= 0;
    return new Double(bestNumber); 
}

但在Eclipse中显示

Type mismatch: cannot convert from Double to Number

实际上此代码属于ChoiceFormat.java包中的java.text类。

2 个答案:

答案 0 :(得分:1)

使用cast

Double d=new Double(2);
Number n=(Number)d;

在你的情况下

Double d=new Double(bestNumber);
Number n=(Number)d;

return n;

答案 1 :(得分:1)

java.lang.Doublejava.lang.Number的子类。因此,如果从返回java.lang.Double的方法返回java.lang.Number,则发布的代码不应显示任何编译错误。

正如Jon Skeet指出的那样,“你在某个地方有一个不同的Double类型或不同的数字类型”。请仔细检查您是否使用java.lang.Doublejava.lang.Number