Может кто-нибудь сказать мне, что не так с моим кодом. Если пользователь вводит отрицательное целое число, программа должна продолжать указывать пользователю, чтобы он вводил положительный результат, пока он этого не сделает. Я думаю, что это логика внутри цикла do-while, но не уверен.Проблема с циклом do-while, но не может найти его
import java.util.Scanner;
public class scratch {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int firstN = 0;
int secondN = 0;
boolean isNumber = false;
boolean isNumPos = false;
System.out.print("Enter a positive integer: ");
do {
if (input.hasNextInt()) {
firstN = input.nextInt();
isNumber = true;
}
if (firstN > 0) {
isNumPos = true;
isNumber = true;
break;
} else {
isNumPos = false;
isNumber = false;
System.out.print("Please enter a positive integer: ");
input.next();
continue;
}
} while (!(isNumber) || !(isNumPos));
System.out.print("Enter another positive integer: ");
do {
if (input.hasNextInt()) {
secondN = input.nextInt();
isNumber = true;
}
if (secondN > 0) {
isNumPos = true;
isNumber = true;
} else {
isNumPos = false;
isNumber = false;
System.out.print("Please enter a positive integer: ");
input.next();
}
} while (!(isNumber) || !(isNumPos));
System.out.println("The GCD of " + firstN + " and " + secondN + " is " + gCd(firstN, secondN));
}
public static int gCd(int firstN, int secondN) {
if (secondN == 0) {
return firstN;
} else
return gCd(secondN, firstN % secondN);
}
}
'} в то время как (IsNumber && isNumPos!);' ... – Reimeus
Почему бы не использовать только одну переменную управления 'badInput = true' перед циклом, а затем сообщить с' continue' когда это вы видите плохую ситуацию? если не число, «это не число» + 'continue'. Пусть 'while (badInput)' делает все остальное. если число, но отрицательное, «введите положительное число» + 'continue'. Опять же, пусть 'while (badInput)' сделает все остальное. После того как вы закончите неудачные случаи, вы можете установить свой «badInput» в false, и вы выйдете из цикла. –