В этой статье рассмотрим алгоритм решения квадратного уравнения и реализуем его на языке программирования Java.
Пусть нам требуется решить уравнение вида: . Будем решать его через дискриминант. Для получения корней уравнения необходимо выполнить следующий алгоритм:
- Вычислим дискриминант по формуле: .
-
ЕСЛИ дискриминант больше нуля, то вычислим корни уравнения x1 и x2 по формуле:
ИНАЧЕ ЕСЛИ дискриминант равен нулю, значит уравнение имеет единственный корень. Вычислим его по формуле:
ИНАЧЕ (то есть дискриминант меньше нуля) уравнение не имеет действительных корней.
Реализуем этот алгоритм на языке программирования Java.
Приступим к написанию кода программы. В начале импортируем класс Scanner, необходимый для ввода данных:
1 |
import java.util.Scanner; |
Перейдем к функции main. Объявим необходимые переменные. Для вычислений будем использовать вещественный тип данных повышенной точности double.
1 2 |
double a, b, c; double D; |
Выведем информацию о программе и попросим пользователя ввести данные:
1 2 3 |
System.out.println("Программа решает квадратное уравнение вида:"); System.out.println("ax^2 + bx + c = 0"); System.out.println("Введите a, b и c:"); |
Создадим новый объект класса Scanner, он необходим для ввода данных в программу. Инициализируем этот объект класса входным потоком:
1 |
Scanner in = new Scanner(System.in); |
Считаем переменные a, b и c:
1 2 3 |
a = in.nextDouble(); b = in.nextDouble(); c = in.nextDouble(); |
Реализуем алгоритм решения квадратного уравнения, который был описан выше.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
D = b * b - 4 * a * c; if (D > 0) { double x1, x2; x1 = (-b - Math.sqrt(D)) / (2 * a); x2 = (-b + Math.sqrt(D)) / (2 * a); System.out.println("Корни уравнения: x1 = " + x1 + ", x2 = " + x2); } else if (D == 0) { double x; x = -b / (2 * a); System.out.println("Уравнение имеет единственный корень: x = " + x); } else { System.out.println("Уравнение не имеет действительных корней!"); } |
На этом написание функции main закончено. Продемонстрируем работу программы:
Если вы хотите скачать исходник этой программы, написанный в среде программирования NetBeans, то нажмите на кнопку ниже.
Скачать исходник
Поделиться в соц. сетях:
Так-то неплохо было бы закрывать поток, открытый для сканера)
При закрытии Scanner автоматически закрывается System.in. Так делать не надо.
Вы можете сказать про утечку ресурсов, но поскольку System.in это статический ресурс, то утекать нечему)
Спасибо, полезно