В прошлой статье мы рассмотрели, как запросить у пользователя ввод и правильно сохранить этот ввод в переменной правильного типа. Пришло время попросить пользователя выбрать, какую арифметическую операцию он хочет выполнить, и предпринять соответствующее действие на основе этого выбора.

Делая выбор

Давайте предложим пользователю и сохраним введенные пользователем данные в переменной:

System.out.println(“What arithmetic operation would you like to perform?”);
System.out.println(“1. Addition”);
System.out.println(“2. Subtraction”);
System.out.println(“3. Multiplication”);
System.out.println(“4. Division”);
userInput = s.nextLine();
int arithmeticChoice = Integer.parseInt(userInput);

Обратите внимание, как на этот раз мы использовали целое число, потому что мы ожидаем, что ответ будет 1, 2, 3 или 4. Но вот еще один вопрос на 60 000 долларов: как мы можем делать разные выборы и делать разные вещи на основе определенных критериев?

Если утверждения

В Java мы используем операторы if / условные операторы для работы с условиями. Обычно операторы if работают так:

if (condition1 is true) {
  perform action1;
} else if (condition2 is true) {
  perform action2;
} else {
  perform action3;
}

Перевод на английский язык:

If condition1 is true, then we perform action1.
If condition1 is false but condition2 is true, then we perform action2.
If both condition1 and condition2 are false, then we perform action3.

Кажется простым, правда? Однако сложная часть, которую вы должны понять, заключается в следующем:

If condition1 and condition2 are both true, then we perform condition1 and that's it.

Это почему? Потому что мы связали condition1 и condition2 вместе, используя else if. Если мы хотим, чтобы и action1, и action2 выполнялись, когда оба condition1 и condition2 истинны, мы должны разделить condition1 и condition2:

if (condition1 is true) {
  perform action1;
}
if (condition2 is true) {
  perform action2;
} else {
  perform action3;
}

Обратите внимание: приведенное выше изменение также повлияет на то, как и когда будет выполняться action3.

Давайте посмотрим на пример.

Есть или не пить? (Ты что?)

Скорее всего, здравый смысл заключается в том, что если мы голодны, мы едим. Если мы не голодны, но хотим пить, мы пьем. В противном случае мы продолжаем делать то, что делаем. Если для вас это не является здравым смыслом, тогда есть более серьезные проблемы, чем незнание того, как программировать. Мы можем преобразовать этот здравый смысл в некоторый псевдокод:

if (hungry) {
  eat;
} else if (thirsty) {
  drink;
} else {
  carry on;
}

Обратите внимание на разницу между «Если мы голодны, мы едим. Если мы не голодны, но хотим пить, мы пьем. В противном случае продолжайте » и « Если мы голодны, мы едим. Если мы хотим пить, мы пьем. В противном случае, продолжайте ». Давайте напишем псевдокод для последнего, так как разница в коде более очевидна:

if (hungry) {
  eat;
}
if (thirsty) {
  drink;
} else {
  carry on;
}

В первом фрагменте псевдокода, даже если мы оба голодны и хотим пить, мы могли есть только потому, что в той же условной цепочке, как только условие выполнено, мы немедленно выходим из условной цепочки, и все условия ниже нее отбрасываются. . Однако во втором фрагменте псевдокода мы могли есть и пить за один раз, потому что это два разных, не связанных друг с другом состояния.

В общем, если у вас есть группа условий, но вы хотите, чтобы сразу сработало только одно, объедините их в цепочку. Если вас устраивает несколько срабатываний сразу нескольких из них, разделите их. В нашем случае мы можем сделать это либо потому, что пользователь может ввести только 1, 2, 3 или 4. Число не может измениться просто на полпути в процессе выполнения программы. Но для хорошей практики давайте объединим их в цепочку независимо от того, потому что принцип стоит, что мы хотим, чтобы выполнялось только одно из четырех условий. Псевдокод идет:

if (arithmeticChoice is 1) {
  do addition;
} else if (arithmeticChoice is 2) {
  do subtraction;
} else if (arithmeticChoice is 3) {
  do multiplication;
} else if (arithmeticChoice is 4) {
  do division;
} else {
  print “Invalid input! Aborting…”;
  end program;
}

Да, мы завершаем программу, если пользователь не дает нам правильного ответа. Вы можете подумать, что лучше всего вернуться и снова спросить пользователя, и я согласен. Мы вернемся к этому в другой статье.

Быстрая проверка прогресса! На этом этапе ваша программа должна выглядеть примерно так (/* */ - это многострочный блок комментариев, чтобы закомментировать наш псевдокод. Напомним, что все комментарии игнорируются компилятором.):

Большой! Теперь мы можем делать выбор на основе ввода данных пользователем. Однако вы можете спросить, как мы можем выполнять эти арифметические операции только с одним числом? Имейте в виду, что наша программа запросила у пользователя только первый номер и операцию, которую он хочет выполнить до сих пор. В настоящее время мы не знаем, что такое второе число. Мы закончим эту статью на этой заметке и уделим время тому, чтобы подумать, что делать дальше. В следующей статье мы перейдем к решению этой проблемы и продолжим работу с нашим простым калькулятором.