Dúvida Equação de 2º grau

Galera, boa noite.

Eu comecei a fazer um programa para resolver equações de 2 grau, mas não ta indo…

Quer dizer. o programa ta rodando lisinho, mas acho que o erro tá na conta do bhakara, pq mesmo ele calculando o delta corretamente, a(s) raíz(es) saem erradas.

//Método que usa Bháskara para calcular as raízes.
public float[] bhaskara(){
float[] res = null;

   if(checaDelta(calculaDelta()) == 1){
       res = new float[1];
       res[0] = -b/(2*a);
   }else if(checaDelta(calculaDelta()) == 2){
       res = new float[2];
       res[0] = (float) ((-b + Math.sqrt(calculaDelta())) / (2*a));
       res[1] = (float) ((-b - Math.sqrt(calculaDelta())) / (2*a));
   }
   return res;
}

A função “checaDelta()” existe somente para verificar se delta é = 0, > 0, < 0. Decidi criar um método apenas pra isso. Pra resumir, se for = 1, então só há uma raíz, se nao terá duas.

E o vetor res (resposta) vai ser criado dependendo do número de raízes possíveis e depois entrará em um método que o percorrerá e mostrará as raízes na tela.

Tá rodando liso e não aponta problemas, até na parte onde mostra o resultado. Por isso acho que o erro tá sendo na hora da conta, pq sempre me confundo com esse lance de parenteses e tals.

Testei com a = 4, b = 4, c = 1. Nesse caso o delta é 0 (isso o programa calcula correto) e também acerta que só há uma raíz, mas essa raíz é 0, sendo que o correto era dar -0,5, não?

Sei que o programa é bem clichê, mas queria fazer e se alguém souber como arrumar me ajudaria mt.

Dá uma refatorada nesse código, você não precisa chamar o checaDelta() 2 vezes muito menos o calculaDelta() 4 vezes.

Posta o código completo da classe e usa o botão de formatação de código </>.

package classes;

import javax.swing.JOptionPane;

/**
*

  • @author Munir
    */
    public class Equacao {

    //Atributos
    private int a;
    private int b;
    private int c;

    //Get e Set
    public int getA() {
    return a;
    }

    public void setA(int a) {
    this.a = a;
    }

    public int getB() {
    return b;
    }

    public void setB(int b) {
    this.b = b;
    }

    public int getC() {
    return c;
    }

    public void setC(int c) {
    this.c = c;
    }

    //Construtor
    public Equacao(int a, int b, int c) {
    this.a = a;
    this.b = b;
    this.c = c;
    }

    //Métodos gerais
    //Método para calcular o delta da equação.
    public int calculaDelta() {
    int delta;

     delta = (int) Math.pow(b, 2) - (4 * a * c);
    
     return delta;
    

    }

    //Método para checar o valor de delta.
    public byte checaDelta(int x) {
    /Situação:
    0 = delta < 0, sem raízes;
    1 = delta = 0, apenas uma raíz;
    2 = delta > 0, duas raízes.
    /
    byte sit;
    int delta = x;

     if (delta < 0) {
         sit = 0;
     } else if (delta == 0) {
         sit = 1;
     } else {
         sit = 2;
     }
     return sit;
    

    }

    //Método que usa Bháskara para calcular as raízes.
    public float[] bhaskara() {
    float[] res = null;

     if (checaDelta(calculaDelta()) == 1) {
         res = new float[1];
         res[0] = -b / (2 * a);
     } else if (checaDelta(calculaDelta()) == 2) {
         res = new float[2];
         res[0] = (float) ((-b + Math.sqrt(calculaDelta())) / (2 * a));
         res[1] = (float) ((-b - Math.sqrt(calculaDelta())) / (2 * a));
     }
     return res;
    

    }

    //Método para mostrar o resultado.
    public String resultado() {
    float[] res = bhaskara();
    StringBuilder saida = new StringBuilder(“Delta: “).append(calculaDelta()).append(”\n”);

     if (checaDelta(calculaDelta()) == 0) {
         saida.append("Delta negativo. Não há raíz(es)!");
     } else {
         saida.append("Raízes possíveis: ").append(res.length).append("\n").append("Equação: ").append(equacao()).append("\n");
         for (int i = 0; i < res.length; i++) {
             saida.append("\n").append("Raíz(es): ").append(res[i]);
         }
     }
     return saida.toString();
    

    }

    //Método que mostra a equação completa.
    public String equacao() {
    return a + "x² + " + b + "x + " + c;
    }
    }

AI, cara. Ta na mão… Por favor me avisa se char mais algum erro ai kkkkkkkkkk

Sei que o método “equacao()” tbm não ta correto, mas isso é o de menos