import java.io.IOException;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Test
{
static float a, b, c;
static float d;
static double x1, x2;
public static void main(String args []) throws IOException
{
try{
System.out.println("Решение квадратного уравнения");
Scanner s = new Scanner(System.in);
System.out.print("Введите значение a -> ");
a = s.nextFloat();
System.out.print("Введите значение b -> ");
b = s.nextFloat();
System.out.print("Введите значение c -> ");
c = s.nextFloat();
System.out.println("a = " + a + " b = " + b + " c = " + c);
d = (b * b) - (4 * a * c);
System.out.println("Дискриминант = " + d);
if(d < 0)
System.out.print("Уравнение не имеет решений!!!");
else
if(d == 0)
{
x1 = (-b) / (2 * a);
System.out.println ("x = " + x1);
}
else
{
x1 = (-b + Math.sqrt(d)) / (2 * a);
x2 = (-b - Math.sqrt(d)) / (2 * a);
if (x1 == x2)
System.out.println ("x1 = x2 " + x1);
else
System.out.println ("x1 = " + x1 + " x2 = " + x2);
}
}catch(InputMismatchException e){System.out.println("!!!Ошибка ввода!!!");}
}
}
Квадратное уравнение
Подскажите пожалуйста!!!Правильно ли написан код квадратного уравнения работая с консолью или можно его переделать произвести модернизацию кода!!! Можно пример правильного кода квадратного уравнения!!!
x1 равен x2 в случае равенства дискриминанта нулю.
Вообще, d = 0 не означает, что у уравнения один корень. Это значит, что у уравнения два корня, просто они одинаковые. Так что if (x1 == x2) здесь не нужно.
И че за идиотизм писать три восклицательных знака? И где знаки вопроса?
Какой лучше цикл использовать для повторения while или for !!!Например если ввел не правильное значение то программа останавливается, а после повторного ввода правильных данных программа продолжала работать!!!
А цикл можно использовать любой. Общее правило - если вы заранее можете вычислить количество итераций, берите for, если вы можете только на каждой итерации проверять условия выхода - берите while.