Java 当A>;1.
我正在开发我的第一个应用程序,它解决了二次公式,我遇到了一个问题,当foa的值大于1时,该应用程序对根给出了错误的答案。 代码如下:Java 当A>;1.,java,android,quadratic,Java,Android,Quadratic,我正在开发我的第一个应用程序,它解决了二次公式,我遇到了一个问题,当foa的值大于1时,该应用程序对根给出了错误的答案。 代码如下: package com.example.firstapp; import java.lang.Math; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.widget.E
package com.example.firstapp;
import java.lang.Math;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
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);
double num1 = Double.parseDouble(number1text.getText().toString()) , num2 = Double.parseDouble(number2text.getText().toString()), num3 = Double.parseDouble(number3text.getText().toString());
if ((num2 * num2) - (4*num1*num3) < 0){
}
double ans = (double) ((-(num2)- (Math.sqrt(num2 * num2 - (4*num1*num3))))/2*num1);
double ans2 = (double) (((-(num2)+ Math.sqrt(num2 * num2 - (4*num1*num3))))/2*num1);
TextView answer = (TextView)findViewById(R.id.ans1);
answer.setText("The first root is: " + ans);
TextView answer2 = (TextView)findViewById(R.id.ans2);
answer2.setText("The second root is: " + ans2);
}
private TextView getText(String string) {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
package com.example.firstapp;
导入java.lang.Math;
导入android.os.Bundle;
导入android.app.Activity;
导入android.view.Menu;
导入android.view.view;
导入android.widget.EditText;
导入android.widget.TextView;
公共类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);
double num1=double.parseDouble(number1text.getText().toString()),num2=double.parseDouble(number2text.getText().toString()),num3=double.parseDouble(number3text.getText().toString());
如果((num2*num2)-(4*num1*num3)<0){
}
双ans=(双)((((num2)-(数学sqrt)(num2*num2-(4*num1*num3)))/2*num1);
双ans2=(双)(((((num2)+数学sqrt(num2*num2-(4*num1*num3)))/2*num1);
TextView答案=(TextView)findViewById(R.id.ans1);
setText(“第一个根是:“+ans”);
TextView answer2=(TextView)findViewById(R.id.ans2);
answer2.setText(“第二个根是:”+ans2);
}
私有文本视图获取文本(字符串){
//TODO自动生成的方法存根
返回null;
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.main,menu);
返回true;
}
}
任何关于为什么会发生这种情况的帮助都是非常有用的
提前感谢正确的公式是
-b±sqrt(b^2-4ac)/(2a)
你有-b±sqrt(b^2-4ac)/2*a
括号会有帮助,即大约2*num1首先,if语句中没有任何内容。当检查b*b-4ac是否小于零时,应该在else中有计算ans1和ans2的代码。否则,如果行列式小于零,它仍然计算它。而且还有很多不相关的代码,NUM1、NUM2和NUM3不是变量的好名字,考虑把它们改成A、B、C,以符合编写公式的标准方式,每次添加一个特征没有错误,直到程序完成它需要做的每件事。OP还没有处理“无根案例”,这很好,因为他/她还没有完成“a!=1”案例的正确处理。