Java 二次方程

Java 二次方程,java,Java,我想在android上做一个二次方程求解器。我有一个基本的设置工作,但除非我输入一个完美的二次它将输出NaN TextView answerField1 = (TextView) findViewById(R.id.answer1); TextView answerField2 = (TextView) findViewById(R.id.answer2); EditText fieldA = (EditText) findViewById(R.id.aTextField); EditText

我想在android上做一个二次方程求解器。我有一个基本的设置工作,但除非我输入一个完美的二次它将输出NaN

TextView answerField1 = (TextView) findViewById(R.id.answer1);
TextView answerField2 = (TextView) findViewById(R.id.answer2);
EditText fieldA = (EditText) findViewById(R.id.aTextField);
EditText fieldB = (EditText) findViewById(R.id.bTextField);
EditText fieldC = (EditText) findViewById(R.id.cTextField);
Double aString = Double.parseDouble(fieldA.getText().toString());
Double bString = Double.parseDouble(fieldB.getText().toString());
Double cString = Double.parseDouble(fieldC.getText().toString());
Double answer1 = ((-1 * bString) + Math.sqrt(((bString * bString) - (4 * aString * cString))))/(2 * aString);
Double answer2 = ((-1 * bString) - Math.sqrt(((bString * bString) - (4 * aString * cString))))/(2 * aString);
answerField1.setText("" + answer1);
answerField2.setText("" + answer2);

有没有办法输出带小数的原始值?

您可以通过创建一个if语句来解决这个问题,该语句检查判别式是否大于0

if(((b*b)-4*a*c) < 0){
        System.out.println("No real answers");

    }
if(((b*b)-4*a*c)<0){
System.out.println(“无真实答案”);
}

这应该可以消除您遇到的任何问题。

您是在寻找
字符串.格式
?这与NaN有什么关系?可能重复感谢反馈人员,我通过Slanec的链接解决了它。是的,问题不在于代码,而在于数学。二次方程可能没有实解,甚至只有一个解。