Android studio:错误:不兼容的类型:double无法转换为String

时间:2018-02-11 13:04:19

标签: java string android-studio

我是android studio的新手,并试图制作一个计算器应用程序。我的几乎所有按钮都在工作(0-9),但我只需编写加法,减法,乘法和除法按钮。现在我遇到了一个问题:

  

错误:不兼容的类型:double无法转换为String。

我真的不知道如何更改它以让它工作。这是我的代码的一部分:

//Button A (Addition) Event Handler
    buttonA.setOnClickListener(
            //Button A Interface
            new Button.OnClickListener(){
                //Button A Callback Method
                public void onClick(View v){
                    TextView output = (TextView)findViewById(R.id.editText);
                    tempDouble = Double.parseDouble(output.getText().toString());
                    output.setText("");
                    sign = "+";
                }
            }
    );

    //Button S (Subtract) Event Handler
    buttonS.setOnClickListener(
            //Button S Interface
            new Button.OnClickListener(){
                //Button S Callback Method
                public void onClick(View v){
                    TextView output = (TextView)findViewById(R.id.editText);
                    tempDouble = Double.parseDouble(output.getText().toString());
                    output.setText("");
                    sign = "-";
                }
            }
    );

    //Button D (Divide) Event Handler
    buttonD.setOnClickListener(
            //Button D Interface
            new Button.OnClickListener(){
                //Button D Callback Method
                public void onClick(View v){
                    TextView output = (TextView)findViewById(R.id.editText);
                    tempDouble = Double.parseDouble(output.getText().toString());
                    output.setText("");
                    sign = "/";
                }
            }
    );

    //Button M (Multiply) Event Handler
    buttonM.setOnClickListener(
            //Button M Interface
            new Button.OnClickListener(){
                //Button M Callback Method
                public void onClick(View v){
                    TextView output = (TextView)findViewById(R.id.editText);
                    tempDouble = Double.parseDouble(output.getText().toString());
                    output.setText("");
                    sign = "*";
                }
            }
    );

    //Button Equals
    buttonE.setOnClickListener(
            new Button.OnClickListener(){
                public void onClick(View v){
                    TextView output = (TextView)findViewById(R.id.editText);
                    tempDouble2 = Double.parseDouble(output.getText().toString());

                    if (sign .equals("+")){
                        output.setText(Double.toString(tempDouble + tempDouble2));
                    }
                    else if (sign .equals("-")){
                        output.setText(Double.toString(tempDouble - tempDouble2));
                    }
                    else if (sign .equals("X"))){
                        output.setText(Double.toString(tempDouble * tempDouble2));
                    }
                    else if (sign .equals("/")){
                        if (tempDouble2 == 0){
                            //Cannot devide by zero
                            output.setText("X");
                        }
                        else {
                            output.setText(Double.toString(tempDouble / tempDouble2));
                        }
                    }

                    //Reset the Sign variable
                    sign = "";
                }
            }
    );
}

我也得到错误:

  

错误:二元运算符的错误操作数类型' - '

     

错误:二元运算符的错误操作数类型' *'

     

错误:二元运算符' /'

的错误操作数类型

有经验的人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

你不能使用' +'两个Double对象之间的运算符。

如果要将Double转换为String,则应使用

String.valueOf(tempDouble);

如果要添加两个Double对象,则应使用

tempDouble.doubleValue() + tempDouble2;