public class BeerSong {
public static void main(String args[]) {
int BeerNum = 99;
String word = "bottles";
while(BeerNum > 0) {
System.out.println(BeerNum + " " + word + " of the beer on the wall");
System.out.println("Catch one.");
System.out.println("Take around.");
BeerNum = BeerNum - 1;
if(BeerNum == 1) {
word = "bottle";
}
if(BeerNum > 0) {
System.out.println(BeerNum + " " + word + " of the beer on the wall");
} else {
System.out.println("Nothing on the wall");
}
}
}
}
Сам вопрос насчет:
if(BeerNum == 1)
word = "bottle";
}
Если его поставить сразу после while, то в конце будет так: 1 bottles of the beer on the wall. 1 bottle of the beer on the wall.
Почему для првой строки берется множественное значение, а для второй единственное? В тоже время, если поставить данный оператор if после BeerNum = BeerNum - 1; то оба значения будут в единственном числе. Объясните. почему такая разница? Разве есть различие, где ставить if в начале блока кода или после уменьшения? Спасибо!
различие, где ставить if в начале блока кода или после уменьшения?- тебе не кажется, что ты сам ответил на вопрос? – Алексей Шиманский Oct 14 '17 at 05:13wordпроисходит после вычитания, а с вашими изменениями - перед вычитанием. Пройдите по программе пошаговой отладкой и сами все поймете. Видимо вас вводит в заблуждение то, что вывод каждой итерации происходит без разделителя, поставьте последним оператором циклаwhileоператорSystem.out.ptintln()и увидите, что выводится за одну итерацию (итерации будут разделены пустой строкой) - В оригинале уже в предпоследней итерации выводится bottle, при ваших изменениях - только в последней. – pavlofff Oct 14 '17 at 10:34