Всякий раз, когда я запускаю этот код, он работает довольно гладко, пока цикл while не пробегает один раз. Он вернется и попросит имя снова, а затем пропустите String b = sc.nextLine() ;, и напечатайте следующую строку.Я получаю утечки ресурсов
static Scanner sc = new Scanner(System.in);
static public void main(String [] argv) {
Name();
}
static public void Name() {
boolean again = false;
do
{
System.out.println("What is your name?");
String b = sc.nextLine();
System.out.println("Ah, so your name is " + b +"?\n" +
"(y//n)");
int a = getYN();
System.out.println(a + "! Good.");
again = askQuestion();
} while(again);
}
static public boolean askQuestion() {
System.out.println("Do you want to try again?");
int answer = sc.nextInt();
if (answer == 1) {
return true;
}
else {
return false;
}
}
static int getYN() {
switch (sc.nextLine().substring(0, 1).toLowerCase()) {
case "y":
return 1;
case "n":
return 0;
default:
return 2;
}
}
}
Кроме того, я пытаюсь создать эту программу таким образом, что я могу задать три вопроса (как чье-то имя, пол и возраст, может быть, больше, как раса и этажерки), и затем верните все эти ответы. Например, в самом конце, скажем: «Итак, ваше имя + имя +, вы + пол +, а вы + возраст + лет? Да/Нет». Что-то в этом роде. Я знаю, что есть способ сделать это, но я не знаю, как сохранить ответы в любом месте, и я не могу их захватить, поскольку они встречаются только в экземпляре метода.
Простите, что это заняло много времени, чтобы вернуться к этому, но да, это помогает! Я понял! –