Java 错误:";无法对基元类型float调用String();关于二次公式?
在我第一次尝试android应用程序时,我收到错误“无法在基本类型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
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()
tryFloat.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形式的答案。