#java #while-loop #decrement
#java #цикл while #уменьшение
Вопрос:
Я новичок в Java. Я пытаюсь запустить цикл while и условие if внутри цикла while. В середине цикла while происходит уменьшение. Могу ли я поместить уменьшение (x = x-1) в конец? Что это значит, если я помещу это в середину и если я помещу это в конец? Пожалуйста, объясните мне разницу.
public class shuffle1 {
public static void main(String[] args) {
int x = 3;
while (x > 0) {
if (x > 2) {
System.out.print("a");
}
x = x - 1;
System.out.print("-");
if (x == 2) {
System.out.print("b c");
}
if (x == 1) {
System.out.print("d");
x = x - 1;
}
}
}
}
Комментарии:
1. Какой результат вы ожидаете? Почему бы вам не попробовать поместить уменьшение в конец цикла и не запустить код, чтобы увидеть, каков результат?
2. Поскольку вы помещаете это в середину. Последние 2 блока if в цикле while будут вычисляться на основе обновленного значения x.
3. Здесь нет «автоматического уменьшения».
4. я выводил a-b c-d. Могу ли я получить тот же результат, если я добавлю уменьшение в конец?
Ответ №1:
Если вы поместите x = x-1 в середину, два ваших оператора внутри цикла while будут выполнены за одну итерацию, т. е. a-b c будут напечатаны за одну итерацию. Когда вы помещаете это в конец a-b, c будет напечатано в двух итерациях цикла. Таким образом, при таком подходе вы экономите одну итерацию. Более чистый способ написать тот же код, int x = 3;
do {
if (x > 2) {
System.out.print("a");
}
System.out.print("-");
if (x == 2) {
System.out.print("b c");
}
if (x == 1) {
System.out.print("d");
}
}while (0 < --x);
Комментарии:
1. —x сначала уменьшит значение, а затем сравнит с 0. x сравнит с нулем, а затем уменьшит значение. Просто выведите значение x внутри цикла, вы сможете определить разницу