Olá pessoal
Criei uma classe para resolver a equação do 2° grau, porém os métodos x1 e x2 da classe que criei estão retornando o valor errado. Usei como exemplo: a = 1, b = -4 e c = -5
resolução: possui duas raízes 5 e -1, porém o algoritmo esta retornando ambas com o valor 2.
Segue abaixo a classe:
public class EquacaoSegundoGrau {
private double a, b, c, delta;
public void ValordeA(double a) {
this.a = a;
}
public void ValordeB(double b) {
this.b = b;
}
public void ValordeC(double c) {
this.c = c;
}
/*Valor do Delta
*Fórmula: delta=b²-4*a*c
*/
public double Delta() {
double delta = 0;
this.delta = delta;
delta = Math.pow(b, 2) -4 * a * c;
return delta;
}
//x1 - resultado do primeiro x
public double X1() {
double x1;
x1 = (-b + Math.sqrt(delta)) / (2 * a);
return x1;
}
//x2 - resultado do segundo x
public double X2() {
double x2;
x2 = (-b - Math.sqrt(delta)) / (2 * a);
return x2;
}
}
Utilizando a classe:
public class EqSegundoGrau {
public static void main(String[] args) {
double delta=0;
EquacaoSegundoGrau Segundo = new EquacaoSegundoGrau();
Segundo.ValordeA(1);
Segundo.ValordeB(-4);
Segundo.ValordeC(-5);
delta = Segundo.Delta();
if(delta < 0) {
System.out.println("Delta = "+delta+"\n "
+"A equação não possui raízes reais.");
} else if(delta > 0) {
System.out.println("Delta = "+delta+"\n X1 = "+Segundo.X1()+"\n "
+ "X2 = "+Segundo.X2());
} else if(delta == 0) {
System.out.println("Delta = "+delta+"\n "
+ "X1 = "+Segundo.X1()+"\n X2 = "+Segundo.X2()+"\n"
+ "A equação possui uma raíz real.");
} else {
System.out.println("Verifique se informou apenas numeros.");
}