Читать «Java 7 (Наиболее полное руководство)» онлайн - страница 32
Ильдар Шаукатович Хабибуллин
Упражнения
13. Вычислите с помощью условного оператора значение у, равное х + 1, если х < 0, равное х + 2, если 0 <= х < 1, и равное х + 10 в остальных случаях.
14. Запишите условный оператор, дающий логической переменной z значение true, если точка M^, у) лежит в единичном круге с центром в начале координат, и значение false в противном случае.
Операторы цикла
Основной оператор цикла — оператор while — выглядит так:
while
Вначале вычисляется логическое выражение
Оператор в цикле может быть и пустым, например следующий фрагмент кода:
int i = 0; double s = 0.0;
while ((s += 1.0 / ++i) < 10);
вычисляет количество i сложений, которые необходимо сделать, чтобы гармоническая сумма s достигла значения 10. Такой стиль характерен для языка С. Не стоит им увлекаться, чтобы не превратить текст программы в шифровку, на которую вы сами через пару недель будете смотреть с недоумением, пытаясь понять, что же делают эти операторы.
Можно организовать и бесконечный цикл:
while (true)
Конечно, из такого цикла следует предусмотреть какой-то выход, например оператором break, как сделано в листинге 1.5. В противном случае программа зациклится, и вам придется прекращать ее выполнение комбинацией клавиш <Ctrl>+<C> в UNIX или через окно Task Manager в Windows.
Если в цикл надо включить несколько операторов, то следует образовать блок операторов {} .
Второй оператор цикла — оператор do-while — имеет вид:
do
Здесь сначала выполняется оператор, а потом происходит вычисление логического выражения
В цикле do-while проверяется условие продолжения, а не окончания цикла.
Существенное различие между этими двумя операторами цикла только в том, что в цикле do-while
Например, пусть задана какая-то функция fx), имеющая на отрезке [
Листинг 1.5. Нахождение корня нелинейного уравнения методом бисекции
class Bisection{
static double f(double х){
return х*х*х — 3*x*x + 3; // Или что-то другое...
}
public static void main(String[] args){
double a = 0.0, b = 1.5, c, y, eps = 1e-8;
do{
c = 0.5 *(a + b); y = f(c); if (Math.abs(y) < eps) break;