Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado 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,
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.");
}
}
}
-
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
-
Solo comentar que no necesitas crear un nuevo objeto Scanner para cada dato que quieras pedir.
Te basta con uno solo:
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();
-
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