 Open in App
Not now

# Java Program to Find the Roots of Quadratic Equation

• Difficulty Level : Medium
• Last Updated : 11 Jul, 2022

The roots of a function are the x-intercepts. By definition, the y-coordinate of points lying on the x-axis is zero. Therefore, to find the roots of a quadratic function, we set f (x) = 0, and solve the equation, ax2 + bx + c = 0.

Conditions for a quadratic equation –

```ax^2 + bx + c = 0

where
a, b, c are real numbers and cannot be zero ie, there value must be from {-∞ to -1} and {1 to ∞}```

A mathematical formula for finding the roots of a quadratic equation –

```roots = (-b ± √(b2-4ac)) / (2a)

± represents there are two roots.```

The roots of the quadratic equations are –

```first = (-b + √(b2-4ac)) / (2a)
second = (-b - √(b2-4ac)) / (2a)```

The (b^2 – 4ac) which is the determinant, tells us about the nature of the roots –

1. if (b^2 – 4ac) > 0, roots are real and different
2. if (b^2 – 4ac) == 0, roots are real and equal
3. if (b^2 – 4ac) < 0, roots are complex and different

Code to find roots of a quadratic equation:

## Java

 `// Java program to find the roots of``// quadratic equation` `public` `class` `Main {` `    ``public` `static` `void` `main(String[] args)``    ``{` `        ``// value of the constants a, b, c``        ``double` `a = ``7.2``, b = ``5``, c = ``9``;` `        ``// declared the two roots``        ``double` `firstroot, secondroot;` `        ``// determinant (b^2 - 4ac)``        ``double` `det = b * b - ``4` `* a * c;` `        ``// check if determinant is greater than 0``        ``if` `(det > ``0``) {` `            ``// two real and distinct roots``            ``firstroot = (-b + Math.sqrt(det)) / (``2` `* a);``            ``secondroot = (-b - Math.sqrt(det)) / (``2` `* a);` `            ``System.out.format(``                ``"First Root = %.2f and Second Root = %.2f"``,``                ``firstroot, secondroot);``        ``}` `        ``// check if determinant is equal to 0``        ``else` `if` `(det == ``0``) {` `            ``// two real and equal roots``            ``// determinant is equal to 0``            ``// so -b + 0 == -b``            ``firstroot = secondroot = -b / (``2` `* a);` `            ``System.out.format(``                ``"First Root = Second Root = %.2f;"``,``                ``firstroot);``        ``}` `        ``// if determinant is less than zero``        ``else` `{` `            ``// roots are complex number and distinct``            ``double` `real = -b / (``2` `* a);` `            ``double` `imaginary = Math.sqrt(-det) / (``2` `* a);` `            ``System.out.printf(``"First Root = %.2f+%.2fi"``,``                              ``real, imaginary);``            ``System.out.printf(``"\nSecond Root = %.2f-%.2fi"``,``                              ``real, imaginary);``        ``}``    ``}``}`

Output

```First Root = -0.35+1.06i
Second Root = -0.35-1.06i```

Time Complexity: O(log(D)), where D is the discriminant of the given quadratic equation.
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up