Error in the algorithm equation of the second degree in java

3

Good morning, could someone help me understand why my code is not doing the correct processing and why my conditional deviation is wrong?

public void cap4ex3e(){
    double a,b,c,delta,x1,x2;
    Scanner in = new Scanner(System.in);
    a = in.nextFloat();
    b = in.nextFloat();
    c = in.nextFloat();
    if ((a!=0)&&(b!=0)&&(c!=0)){
        delta = Math.sqrt(b)-4*a*c;
        if (delta<0) {
            System.out.println("Não há solução real");
        } else if (delta>0){
            x1=(-b+Math.pow(delta,1/2))/(2*a);
            x2=(-b-Math.pow(delta,1/2))/(2*a);
            System.out.println("Há duas soluções reais: "+x1+"e"+x2);
        } else {
            x1=(-b+Math.pow(delta,1/2))/(2*a);
            x2=(-b-Math.pow(delta,1/2))/(2*a);
            System.out.println("Há apenas uma solução real: "+x1+"e"+x2);
        }
         System.out.println("Não é uma equação do 2º grau");
    }
}

When I assign positive values to variables a, b and c it falls into conditional deviation

if (delta<0) {
    System.out.println("Não há solução real"); 

e:

System.out.println("Não é uma equação do 2º grau");

What was not to happen.

I think it's the wrong way out of the condition but I can not see it.

    
asked by anonymous 17.07.2018 / 14:19

1 answer

9

The delta calculation is wrong, it should be

  

Currentlyit'slike

  

Notethatthelastmessage

  

Nota2nddegreeequation

isalwaysbeingdisplayed,Iimaginethereissomevalidationmissingfromwhentoshowitornot.

Andalsothatinthepartwherethereisonlyonerealsolution,thesolutionisprintedtwice.

Imadesomeadjustmentstothecode,tomakeitmorereadable.Generally,theerrorisonlyintheformulathatcalculatesthedelta.

importjava.util.Scanner;classMain{publicstaticvoidmain(String[]args){doublea,b,c,delta,x1,x2;Scannerin=newScanner(System.in);a=in.nextDouble();b=in.nextDouble();c=in.nextDouble();if(a==0||b==0||c==0){System.out.println("A, B e C precisam ser diferentes de zero");
            return;
        }

        delta = (b * b) - (4 * a * c);

        if (delta < 0) {
            System.out.println("Não há solução real");
        } else if (delta > 0){
            x1 = (-b + Math.pow(delta, 1/2)) / (2 * a);
            x2 = (-b - Math.pow(delta, 1/2)) / (2 * a);
            System.out.println("Há duas soluções reais: " + x1 + " e " + x2);
        } else {
            x1 = (-b + Math.pow(delta, 1/2)) / (2 * a);
            x2 = (-b - Math.pow(delta, 1/2)) / (2 * a);
            System.out.println("Há apenas uma solução real: " +x1 + " e " + x2);
        }
    }
}

See working on repl.it     

17.07.2018 / 14:43