Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 错误:";无法对基元类型float调用String();关于二次公式?_Java_Android - Fatal编程技术网

Java 错误:";无法对基元类型float调用String();关于二次公式?

Java 错误:";无法对基元类型float调用String();关于二次公式?,java,android,Java,Android,在我第一次尝试android应用程序时,我收到错误“无法在基本类型float上调用String()”: 代码如下: public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout

在我第一次尝试android应用程序时,我收到错误“无法在基本类型float上调用String()”:

代码如下:

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;
    }

}
公共类MainActivity扩展活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
公共空间计算(视图五){
EditText number1text=(EditText)findViewById(R.id.a);
EditText number2text=(EditText)findViewById(R.id.b);
EditText number3text=(EditText)findViewById(R.id.c);
整数num1=Integer.parseInt(number1text.getText().toString()),
num2=Integer.parseInt(number2text.getText().toString()),
num3=Integer.parseInt(number3text.getText().toString());
如果((num2^2)-(4*num1*num3)<0){
打破
}
浮点ans=(浮点)((((num2)-Math.sqrt(num2^2-(4*num1*num3)))/2*num1);
浮点ans2=(浮点)((((num2)+数学sqrt(num2^2-(4*num1*num3)))/2*num1);
TextView答案=(TextView)findViewById(R.id.ans1);
答案是:“+ans.toString()”;
TextView answer2=(TextView)findViewById(R.id.ans2);
答案是:“+ans2.toString()”;
}
私有文本视图获取文本(字符串){
返回null;
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.main,menu);
返回true;
}
}

当我尝试调用
ans.toString()
ans2.toString()
try
Float.toString(ans)
Float.toString(ans2)
时,会发生错误。不能在原语上执行
.toString
(或任何实例方法)。

尝试
Float.toString(ans)
Float.toString(ans2)
。您不能对原语执行
.toString
(或任何实例方法)。

您无需执行任何操作。只需将代码保留如下:

 answer.setText("The Answer is: " + ans2);
和下一个相似

不能对基本数据类型使用
toString()
或任何方法

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

编辑:

你也可以

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

你不需要做任何事。只需将代码保留如下:

 answer.setText("The Answer is: " + ans2);
和下一个相似

不能对基本数据类型使用
toString()
或任何方法

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

编辑:

你也可以

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

不能对任何基元类型(如
float
)调用
toString
(或任何方法)。但是,
String
转换会将它转换为
String
,您可以使用
+
操作符

answer.setText("The Answer is: " + ans);
如果需要对显示格式进行更多控制,可以使用
DecimalFormat

此外,此表达式的作用与您认为的不同

(num2 ^ 2)
^
运算符在Java中是位异或,而不是幂运算。使用:

num2 * num2

不能对任何基元类型(如
float
)调用
toString
(或任何方法)。但是,
String
转换会将它转换为
String
,您可以使用
+
操作符

answer.setText("The Answer is: " + ans);
如果需要对显示格式进行更多控制,可以使用
DecimalFormat

此外,此表达式的作用与您认为的不同

(num2 ^ 2)
^
运算符在Java中是位异或,而不是幂运算。使用:

num2 * num2

不能在Primitive上调用
toString()
。你可以用

此外,Java不使用
^
(它是按位异或)执行幂运算

if((数学功率(num2,2))-(4*num1*num3)<0){

不能在Primitive上调用
toString()
。可以使用

此外,Java不使用
^
(它是按位异或)执行幂运算

if((数学功率(num2,2))-(4*num1*num3)<0){

嘿,我只是想指出,你应该使用
num2*num2
而不是
^
,因为这是用于XOR而不是幂运算。我还认为值得注意的是,如果你想,你可以在判别式为负的情况下,得到a+b I形式的答案。嘿,我只是想指出你应该使用
num2*num2
而不是
^
,因为这是用于XOR而不是幂运算。我还认为值得注意的是,如果你愿意,在判别式为负的情况下,你可以得到a+b I形式的答案。