#java #if-statement #while-loop
#java #оператор if #цикл while
Вопрос:
у меня была такая проблема, когда во время цикла на выходе отображается цикл, но также присутствует недопустимый. как мне разделить цикл и операторы if …else?
ниже приведен программный код.
Scanner scan = new Scanner(System.in);
String option = new String("Y");
while (option.equalsIgnoreCase("Y")) {
System.out.println("Good Morning!!");
System.out.print("Do you want to continue [Y/N]: ");
option = scan.nextLine();
if (option.equalsIgnoreCase("N")) {
break;
} else {
System.out.println("invalid");
}
}
это результат цикла. недопустимый должен отображаться только тогда, когда я ввожу другую букву, отличную от y или n
Do you want to continue [Y/N]: y
invalid
Good Morning!!
Do you want to continue [Y/N]: y
invalid
Good Morning!!
и это должно было отображаться так
Good Morning!!
Do you want to continue [Y/N]: y
Good Morning!!
Do you want to continue [Y/N]: y
Good Morning!!
Do you want to continue [Y/N]: n
Комментарии:
1. используйте
continue
в блоке else раньшеSystem.out.println
. docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html2. Вам нужен случай, когда параметр равен «Y».
Ответ №1:
Вы просто проверяете, является ли это «N», но не «Y», поэтому он будет отображаться недопустимым для Y. Вам просто нужно добавить еще else if
один и последний else
с недопустимым.
Scanner scan = new Scanner(System.in);
String option = new String("Y");
while (option.equalsIgnoreCase("Y")) {
System.out.println("Good Morning!!");
System.out.print("Do you want to continue [Y/N]: ");
option = scan.nextLine();
if (option.equalsIgnoreCase("N")) {
break;
}else if(option.equalsIgnoreCase("Y")){
continue;
}else {
System.out.println("invalid");
}
}
Ответ №2:
Scanner scan = new Scanner(System.in);
while (true) {
System.out.println("Good Morning!!");
System.out.print("Do you want to continue [Y/N]: ");
String option = scan.nextLine().toUpperCase();
if ("N".equals(option))
break;
if ("Y".equals(option))
continue;
System.out.println("invalid");
}
Комментарии:
1. Это не объясняет, какие были изменения и почему — это просто тупой код, который не особенно полезен.
Ответ №3:
Вы также можете реализовать else if
проверку допустимого символа и удалить избыточную проверку из условия в while
:
while (true) {
System.out.println("Good Morning!!");
System.out.print("Do you want to continue [Y/N]: ");
String option = scan.nextLine();
if (option.equalsIgnoreCase("N")) {
break;
} else if (!option.equalsIgnoreCase("Y")) {
System.out.println("invalid");
}
}