Условный оператор
Изменить этот порядок можно с помощью блока:
if (ind > 10) {if (ind < 20) x = 0; else x = 1;}
Вообще не стоит увлекаться сложными вложенными условными операторами. Проверки условий занимают много времени. По возможности лучше использовать логические операции, например, в нашем примере можно написать:
if (ind >= 10 && ind <= 20) х = 0; else х = 1;
В листинге 1.4 вычисляются корни квадратного уравнения ах2 + bх + с = 0 для любых коэффициентов, в том числе и нулевых.
Листинг 1.4. Вычисление корней квадратного уравнения.
class QuadraticEquation{ public static void main(String[] args){ double a = 0.5, b = -2.7, с = 3.5, d, eps=le-8; if (Math.abs(a) < eps) if (Math.abs(b) < eps) if (Math.abs(c) < eps) // Все коэффициенты равны нулю System.out.println("Решение – любое число"); else System.out.println("Решений нет"); else System.out.println("xl = x2 = " +(-c / b)); else { // Коэффициенты не равны нулю if((d = b**b -4*a*c)< 0.0){ // Комплексные корни d = 0.5 * Math.sqrt(-d) / a; a = – 0.5 * b/ a; System.out.println("xl = " +a+ " +i " +d+ ",x2 = " +a+ " -i " +d); } else { // Вещественные корни d =0.5 * Math.sqrt(d) / a; a = -0.5 * b / a; System.out.println("x1 = " + (a + d) + ", x2 = " +(a -d)); } } ) }
В этой программе использованы методы вычисления модуля abs() и кратного корня sqrt () вещественного числа из встроенного в Java API класса Math. Поскольку все вычисления с вещественными числами производятся приближенно, мы считаем, что коэффициент уравнения равен нулю, если его модуль меньше 0.00000001. Обратите внимание на то, как в методе println () используется сцепление строк, и на то, как операция присваивания при вычислении дискриминанта вложена в логическое выражение.
Продвинутым" пользователям
Вам уже хочется вводить коэффициенты а, b и с прямо с клавиатуры? Пожалуйста, используйте метод System, in .read (byte [ ] bt), но учтите, что этот метод записывает вводимые цифры в массив байтов bt в кодировке ASCII, в каждый байт по одной цифре. Массив байтов затем надо преобразовать в вещественное число, например, методом Double(new String(bt)).doubleValue0. Непонятно? Но это еще не все, нужно обработать исключительные ситуации, которые могут возникнуть при вводе (см. главу 18).