错误:“无法在二次公式上调用基本类型float上的String()?

时间:2014-10-23 17:28:33

标签: java android

我第一次尝试使用Android应用时收到错误"Cannot invoke String() on the primitive type float"

这是代码:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void calculate(View v){
        EditText number1text = (EditText)findViewById(R.id.a);
        EditText number2text = (EditText)findViewById(R.id.b);
        EditText number3text = (EditText)findViewById(R.id.c);
        Integer num1 = Integer.parseInt(number1text.getText().toString()) , 
        num2 = Integer.parseInt(number2text.getText().toString()), 
        num3 = Integer.parseInt(number3text.getText().toString());
        if ((num2 ^ 2) - (4*num1*num3) < 0){
            break;
        }

        float ans = (float) ((-(num2)- Math.sqrt(num2^2 - (4*num1*num3)))/2*num1);

        float ans2 = (float) ((-(num2)+ Math.sqrt(num2^2 - (4*num1*num3)))/2*num1);


        TextView answer = (TextView)findViewById(R.id.ans1);
        answer.setText("The Answer is: " + ans.toString());
        TextView answer2 = (TextView)findViewById(R.id.ans2);
        answer.setText("The Answer is: " + ans2.toString());

    }


    private TextView getText(String string) {
        return null;
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

当我尝试拨打ans.toString()ans2.toString()时出现错误。

4 个答案:

答案 0 :(得分:4)

您无法在任何基本类型上调用toString(或任何方法),例如float。但是,String转换会将String运算符转换为+

answer.setText("The Answer is: " + ans);

如果您需要更多地控制显示格式,可以使用DecimalFormat

此外,这个表达式不符合你的想法。

(num2 ^ 2)

^运算符在Java中是按位异或,而不是取幂。使用:

num2 * num2

答案 1 :(得分:0)

尝试Float.toString(ans)Float.toString(ans2)。您无法对基元执行.toString(或任何实例方法)。

答案 2 :(得分:0)

你不需要做任何事情。请保留以下代码:

 answer.setText("The Answer is: " + ans2);

与下一个类似。

您不能在原始数据类型上使用toString()或任何方法。

记住:方法是在类中定义的。因此,要使用方法,变量必须首先是一个对象。

<强>编辑:

您也可以

 answer.setText("The Answer is: " + String.valueOf(ans2));

答案 3 :(得分:0)

您无法在基元上调用toString()。您可以使用String.valueOf(float)

String str = String.valueOf(ans);
String str2 = String.valueOf(ans2);

此外,Java不会使用^执行取幂(&#39; s bitwise xor)

if ((Math.pow(num2, 2)) - (4*num1*num3) < 0){