Ключевой момент: выражения Java вычисляются также как и арифметические выражения.
Написание арифметических выражений в Java включает в себя простой перевод арифметических выражений с использованием операторов Java. Например, арифметическое выражение
может быть переведено в выражение Java так:
(3 + 4 * x) / 5 – 10 * (y - 5) * (a + b + c) / x + 9 * (4 / x + (9 + x) / y)
Вычисление выражений и правила приоритетов операторов
Хотя «за сценой» у Java свой собственный путь вычисления выражений, результат выражения Java и соответствующего ему арифметического выражения одинаковый. Поэтому вы можете безопасно применять правила арифметики для вычисления выражения Java. Сначала выполняются операторы, содержащиеся в парах круглых скобок. Скобки могут быть вложенными, и в этом случае сначала вычисляются выражение во внутренних круглых скобках. Когда в выражении используется более одного оператора, для определения порядка оценки используется следующее правило приоритета оператора.
- Умножение, деление и нахождение остатка от деления применяются первыми. Если выражение содержит несколько умножений, делений и нахождений остатка, они применяются слева направо.
- Операторы сложения и вычитания применяются последними. Если выражение содержит несколько операторов сложения и вычитания, они применяются слева направо.
Вот пример, как вычисляется выражение:
Следующая программа преобразовывает градусы Фаренгейта в градусы Цельсия используя следующую формулу:
градусы Цельсия = (5 / 9) * (градусы Фаренгейта - 32)
import java.util.Scanner; public class FahrenheitToCelsius { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Введите градусы в Фаренгейтах: "); double fahrenheit = input.nextDouble(); // Конвертация Фаренгейтов в Цельсии double celsius = (5.0 / 9) * (fahrenheit - 32); System.out.println("Фаренгейт " + fahrenheit + " это " + celsius + " в градусах Цельсия"); } }
Листинг с нумерацией строк:
Трассировка программы:
Будьте внимательны, как применяете деление. Деление двух целых чисел даёт в Java целое число. 5 / 9 из формулы переводится на строке 11 в 5.0 / 9, а не в 5 / 9. Поскольку в Java 5 / 9 даёт 0.
Проверь себя:
- Как бы вы записали в Java следующие арифметические выражения?
А будут какието проверочные цифры к заданию?