Код, который у меня есть, работает, но когда я выполняю цикл do-while, цикл for не сбрасывается до 1, когда пользователь выбирает Yes для повторного запуска программы. Надеюсь, я ясно выражаюсь.
int choice;
int num;
int i;
String input;
int b = 1;
switch (choice) {
case 1:
do {
System.out.println("The starting number is 1.");
//Input
System.out.print("Enter a value: ");
num = sc.nextInt();
for (i = 1; i <= num; i++) {
b = b * i;
//Output
System.out.printf("%d! = %d\n", i, b);
}
System.out.print(
"Run the program again? (Y for Yes, N for No): ");
input = sc.next();
} while (input.equalsIgnoreCase("Y"));
if (input.equalsIgnoreCase("N")) {
System.out.println(
"Have a great day!");
System.exit(0);
}
break;
}
Я попробовал петлю while вместо петли for, и я вообще не получил результатов. Я новичок в Java, поэтому я все еще учусь.
Я добавил break в конце цикла for, но это завершает цикл только после 1 приращения.
Возможно, вы могли бы отредактировать вопрос, включив в него примеры входных данных, ожидаемых и фактических результатов.
У тебя настоящая проблема с b? Нет никаких причин для того, чтобы это было чем-то другим, кроме того, что было до цикла. Если вы хотите сбросить b, сбросьте его. Переменная цикла, безусловно, всегда будет такой, какой она должна быть.
b = 1; for (i = 1; i <= num; i++) {
Вам не нужно выражение switch. Кроме того, объявите переменные в самой узкой области. В этом случае, кроме sc, они должны быть объявлены в цикле do/while или, в случае b, в цикле for.
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
do {
System.out.println("The starting number is 1.\n");
System.out.print("Enter a value: ");
// Input
int num = sc.nextInt();
for (int i = 1, b = 1; i <= num; i++) {
b = b * i;
// Output
System.out.printf("%d! = %d\n", i, b);
}
System.out.print(
"Run the program again? (Y for Yes, N for No): ");
String input = sc.next();
if (input.equalsIgnoreCase("N")) {
System.out.println(
"Have a great day!");
sc.close();
System.exit(0);
}
} while (true);
}
Спасибо, что показали мне, что я делал неправильно с циклом for. Я новичок в Java, и я все еще учусь.
Что вы имеете в виду, что цикл for не сбрасывается до 1? Цикл for начинается с единицы на каждой итерации, даже после того, как пользователь вводит «Y». Ваш вопрос не ясен