[英]quadratic formula java NaN?
我必须要做二次方程式。 当我生成文件时,它没有错误,但是当我运行项目时,输出是Nan。 我知道那不是“数字”,但我不知道如何解决。
import java.io.*;
class cuadratica
{
public static void main(String [] args) throws IOException
{
cuadra obj=new cuadra();
System.out.println("5. Calcular la ecuación cuadrática (ax^2 + bx + c) ");
obj.cal();
}
}
class cuadra
{
void cal() throws IOException
{
String x;
int a;
String w;
int b;
String t;
int c;
int g;
int f;
double num3;
double num2;
double q;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
System.out.println("Inserte el primero numero (ax^2)" );
x=br.readLine();
a=Integer.parseInt(x);
System.out.println("Inserte el segundo numero (bx)");
w=br.readLine();
b=Integer.parseInt(w);
System.out.println("Inserte el tercer numero (c)");
t=br.readLine();
c=Integer.parseInt(t);
g=(b*b)-(4*a*c);
q=Math.sqrt(g);
if (a!=0||g>0)
{
num2 = (-b+q)/(2*a);
num3 = (-b-q)/(2*a);
System.out.println("La raiz son "+num2+" y "+num3);
}
else
{
System.out.println("error");
}
}
}
用实系数求解二次方程ax^2 + bx + c = 0
时,方程的根将属于以下类别之一:
我已经尝试过您的程序,它为a = 1, b = 2, c = 1
提供了正确的解决方案,但是对于a = 1, b = 1, c = 1
提供a = 1, b = 1, c = 1
NaN
。 为了解决您的逻辑错误,您必须先b^2 - 4ac
判别式 b^2 - 4ac
(代码中的变量g
) 为非负值,然后再求平方根(判别式为负数时,它对应于上面的情况3) 。 否则,当取负数的平方根时会得到NaN
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.