无法在基本类型double上调用toString()

时间:2014-03-06 21:49:42

标签: java android eclipse

  

textdisplay.setText(total.toString());

当我试图撤销String时。它给了我一个错误,如“无法在原始类型double上调用tostring()”。我读了类似的线程并尝试了一切但没有任何作用。奇怪的是,这个相同的代码适用于我的朋友。 请帮忙。

public void showsign(String sign){
        if(last_button==R.id.plus || last_button==R.id.minus || last_button==R.id.multiply 
            || last_button==R.id.divide){

    }
    else{
        clear_flag = 1;
        Double newNumber = Double.parseDouble(textdisplay.getText().toString());
        if(sign_flag == "" || sign_flag == "="){
            total = newNumber;
            textdisplay.setText(total.toString());

        }
        else if(sign_flag == "+"){
            total = total+newNumber;
            textdisplay.setText(total.toString());
        }
        else if(sign_flag == "-"){
            total = total-newNumber;
            textdisplay.setText(total.tostring());
        }
        else if(sign_flag == "*"){
            total = total*newNumber;
            textdisplay.setText(total.tostring());
        }
        else if(sign_flag == "/"){
            total = total/newNumber;
            textdisplay.setText(total.tostring());  
        }


    }
} 

7 个答案:

答案 0 :(得分:4)

原始类型不是Object,因此没有.toString()

你必须使用(例如)String.valueOf(),即:

textdisplay.setText(String.valueOf(total)); 

更重要的是,这个:

if(sign_flag == "/")

和类似的东西不起作用。请改为使用"/".equals(sign_flag)(如果sign_flag.equals("/")保证不是sign_flag,则使用null

答案 1 :(得分:2)

您可以使用String.valueOf(double)

,但..

查看DecimalFormat:http://docs.oracle.com/javase/6/docs/api/java/text/DecimalFormat.html

与String.valueOf不同,您可以控制要查看的小数位数。

答案 2 :(得分:0)

原始类型不是Object,因此它没有toString方法。

我看不到total的声明,但我很确定它是原始的。尝试使用它的包装器。例如,如果您看到类似double total =的内容...... 将其更改为Double total = ...

另一个问题是,如果你使用==,则意味着“比较参考”。如果您想比较Object s(如String),请使用equals方法。

答案 3 :(得分:0)

Doubledouble基元类型的包装类。 如果您不想“Auto-box”加倍对象,那么您可以随时使用:String.valueOf(double)

答案 4 :(得分:0)

如果你想使用.toString(),那么有问题的变量必须是一个Object。基元不是对象。要完成你想要的和你的朋友可能做的事情。您需要使用包装类。

包装类: 双

原始: 双

答案 5 :(得分:0)

而不是textdisplay.setText(total.toString());使用textdisplay.setText("" + total);

正如其他人已经指出的那样toString()方法在Object类中定义,默认情况下由class es继承,因此toString()方法可用于任何您在库中定义或可用的类。但是,doubleintfloatbyte等原语不是类,因此这些类型的变量不能调用toString()方法。

答案 6 :(得分:0)

你不能直接转换这个双倍你应该使用这个......

    double doublevalue = 0;
    String value = String.valueOf(doublevalue);