Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Calmahuesos en 16 de Julio 2020, 10:55

Título: Resultado NaN en Java con SQL ejercicio ecuación cuadrática o de segundo grado
Publicado por: Calmahuesos en 16 de Julio 2020, 10:55
Buenos días a todos, hace poco que he empezado con Java y SQL, aunque estoy dedicando más tiempo al primero, soy muy nuevo y estoy intentando hacer ejercicios básicos para afianzar lo aprendido.

Tengo este código de una ecuación de segundo grado, pero en la mayoría de los casos el resultado de las variables me da NaN.

¿Hay alguna forma para que en lugar de darme NaN me diga que no se puede resolver o algo asi?

Muchas gracias a todos,

Código: [Seleccionar]
System.out.println("Vamos a resolver una ecuación de segundo grado donde ax^2+bx+c=0");

Scanner a1=new Scanner(System.in);
System.out.println("Introduce un valor para a");
double a2=a1.nextDouble();

Scanner b1=new Scanner(System.in);
System.out.println("Introduce un valor para b");
double b2=b1.nextDouble();

Scanner c1=new Scanner(System.in);
System.out.println("Introduce un valor para c");
double c2=c1.nextDouble();

double d=b2*b2-4*a2*c2;

double x1=(-b2+Math.sqrt(d))/2*a2; //Incognita

double x2=(-b2-Math.sqrt(d))/2*a2; //Incognita

if(x1!=0 && x2!=0) {

System.out.println("Para a="+a2+", b="+b2+" y c="+c2+", los valores de x pueden ser: "+x1+" y "+x2);

}else {

System.out.println("La ecuación no tiene solución.");
}

}

}
Título: Re:Resultado NaN en Java. Principiante
Publicado por: Calmahuesos en 16 de Julio 2020, 11:02
Lamento haceros perder el tiempo, no se como no lo veía. El resultado daba NaN cuando la variable "d" me da como resultado un numero negativo. El "if" está mal, asi que lo cambié.

Gracias de todos modos
Título: Re:Resultado NaN en Java. Principiante
Publicado por: Kabuto en 16 de Julio 2020, 13:20
Solo comentar que no necesitas crear un nuevo objeto Scanner para cada dato que quieras pedir.
Te basta con uno solo:
Código: [Seleccionar]
System.out.println("Vamos a resolver una ecuación de segundo grado donde ax^2+bx+c=0");

Scanner a1=new Scanner(System.in);
System.out.println("Introduce un valor para a");
double a2=a1.nextDouble();

System.out.println("Introduce un valor para b");
double b2=a1.nextDouble();

System.out.println("Introduce un valor para c");
double c2=a1.nextDouble();
Título: Re:Resultado NaN en Java. Principiante
Publicado por: Calmahuesos en 17 de Julio 2020, 10:34
Muchas gracias Kabuto por tu respuesta, corregí el código y ya entendí el porqué no hacía falta estar creando objetos de tipo Scanner.  ;D