Вы должны вернуться в случае ошибки. С помощью логической переменной и простого цикла while все должно быть в порядке.
Примерно так:
boolean flag = true;
do {
String name = scan.nextLine();
if (name.startsWith("Ms. ") || name.startsWith("Mr. ")) {
System.out.println("Welcome : " + name);
// break the loop.
flag = false;
} else {
System.out.println("Please re-enter your name");
}
} while (flag);
Вы также можете исключить переменную. Делая что-то вроде:
while (true) {
String name = scan.nextLine();
if (name.startsWith("Ms. ") || name.startsWith("Mr. ")) {
System.out.println("Welcome : " + name);
break;
} else {
System.out.println("Please re-enter your name");
}
}
РЕДАКТИРОВАТЬ: поддержка или несколько полей.
// previous while loop here
flag = true; // resetting flag
while (flag) {
System.out.println("Where do you live? [Contains 'Street']");
String address = scan.nextLine();
if (address.contains("Street")) {
System.out.println("Proceed to the next step");
// terminate the loop
flag = false;
} else {
System.out.println("Please re-enter your address");
}
}