#java #if-statement #while-loop #nested-loops
#java #if-statement #цикл while #вложенные циклы
Вопрос:
У меня возникли проблемы с тем, чтобы моя программа выполняла то, что мне нужно. В коде нет синтаксических ошибок.
Во-первых, я настроил свою программу так, чтобы запрашивать у пользователя имя и фамилию максимум 3 раза, пользователь должен иметь возможность завершить ввод раньше, если захочет.
Есть ли способ, которым я могу поместить System.out.print(«Вы хотите добавить новое имя (Y / N)»); вне оператора if? Поэтому он остановится после того, как я введу свое третье имя или введу 2 имени и наберу N.
Любая помощь будет принята с благодарностью.
import java.util.Scanner;
public class SOF {
public static void main(String test[]){
@SuppressWarnings("resource")
Scanner scanner = new Scanner (System.in);
System.out.print("Do you want to add a new name (Y/N)");
String newname = scanner.next();
int AddName = 0;
while (AddName < 3) {
if (newname.equalsIgnoreCase("y"))
{
System.out.println("Enter first name: ");
String fname = scanner.next();
System.out.println("Enter last name: ");
String lname = scanner.next();
AddName = AddName 1;
System.out.print("Do you want to add a new name (Y/N)");
String newnamee = scanner.next(); //had to add an extra e, since I had two varibles
// with the same time. This might be the issue.
//I'm unsure though
}
else if (newname.equalsIgnoreCase("n")) {
System.out.println("Goodbye");
AddName = AddName 3;
}
}
}
}
Комментарии:
1. Используйте то же
newname
самое, а затем добавьтеamp;amp; newname.equalsIgnoreCase("y")
в тест while.
Ответ №1:
Вы можете поместить System.out.print("Do you want to add a new name (Y/N)");
в начало цикла while, что-то вроде этого :
import java.util.Scanner;
public class SOF {
public static void main(String test[]){
@SuppressWarnings("resource")
Scanner scanner = new Scanner (System.in);
int AddName = 0;
while (AddName < 3) {
System.out.print("Do you want to add a new name (Y/N)");
String newname = scanner.next();
if (newname.equalsIgnoreCase("y"))
{
System.out.println("Enter first name: ");
String fname = scanner.next();
System.out.println("Enter last name: ");
String lname = scanner.next();
AddName = AddName 1;
}
else if (newname.equalsIgnoreCase("n")) {
System.out.println("Goodbye");
AddName = AddName 3; //alternatively you can use break statement.
}
}
}
}
Комментарии:
1. Вместо
AddName = AddName 3;
альтернативы вы можете использоватьbreak
оператор.2. Хорошо, я попробую это. Спасибо 🙂
Ответ №2:
Вместо этого используйте do while:
public static void main(String test[]) {
@SuppressWarnings("resource")
Scanner scanner = new Scanner(System.in);
int AddName = 0;
do {
System.out.print("Do you want to add a new name (Y/N)");
String newname = scanner.next();
if (newname.equalsIgnoreCase("y")) {
System.out.println("Enter first name: ");
String fname = scanner.next();
System.out.println("Enter last name: ");
String lname = scanner.next();
AddName = AddName 1;
}
else if (newname.equalsIgnoreCase("n")) {
System.out.println("Goodbye");
AddName = AddName 3;
}
} while (AddName < 3);
}
Комментарии:
1. Я попробовал это, и это сработало. Сегодня я узнал кое-что новое, никогда не использовал и не пробовал делать раньше. Вы, ребята, реагируете очень быстро!
Ответ №3:
Ваша вторая переменная никогда не используется:
String newnamee = scanner.next(); //<-- remove the declaration
newname = scanner.next();//<-- try this instead