Привет, это мой первый пост здесь, и у меня есть проблема:Java Scanner игнорирует ответ
У меня есть программа, в которой, в какой-то момент, запрашивает у пользователя, если он хочет поделиться звезды, и если он якобы делает , программа возвращается к их сбору, и через некоторое время возвращается к вопросу, если он хочет поделиться ими снова.
Проблема заключается в том, что, когда пользователь возвращается к этой точке, программа игнорирует любой ответ, который он дает, и переходит к блоку ответов «else».
Это выглядит следующим образом:
"Do you want to share your stars?
yes
Please answer with yes or no"
Код:
import java.util.Random;
import java.util.Scanner;
public class App {
static Scanner skan = new Scanner(System.in);
static int starCount = 0;
static Random random = new Random();
public static void main(String[] args) {
starReaching();
}
static void starReaching() {
boolean starCollected = false;
int i = 0;
int j = random.nextInt(101);
while (i < j) {
i++;
System.out.println("Stars are out of reach");
}
if (i > j || i == j) {
starCollected = true;
}
if (starCollected == true) {
starCollector();
}
}
static void starCollector() {
System.out.println("You caught a star !");
starCount++;
if (starCount == 10) {
System.out.println("You have 10 stars ! :)");
System.out.println("Do you want to share your stars?");
String line = skan.nextLine();
if (line.equals("yes")) {
skan.reset();
starGiver();
} else if (line.equals("no")) {
wishMaker();
} else {
System.out.println("Please answer with yes or no");
System.exit(0);
}
} else {
starReaching();
}
}
static void starGiver() {
System.out.println("How many do you want to share?");
int starsToShare = skan.nextInt();
if (starsToShare < 10 || starsToShare == 10 && starsToShare > 0) {
starCount = starCount - starsToShare;
System.out.println("Stars shared !");
System.out.println("You now have " + starCount + " stars");
System.out.println("Go collect them again!");
starReaching();
} else if (starsToShare > 10) {
System.out.println("You don't have enough stars to share that much!");
starGiver();
} else {
System.out.println("That's not a valid option");
starGiver();
}
}
static void wishMaker() {
}
}
после смены на 'String line = skan.nextLine(); \t \t \t если (line.equals ("да")) { \t \t \t \t skan.reset(); \t \t \t \t звездаGiver(); \t \t \t} еще если (line.equals ("нет")) { \t \t \t \t wishMaker();? ' сообщение теперь «вы хотите поделиться звезды Do Пожалуйста ответить да или no " так что теперь он доцент даже ждет ввода – Selvidian
@Selvidian: У вас другие проблемы с кодом, скорее всего, в коде не отображается. Вы вызываете какие-либо другие методы сканера, кроме 'nextLine()'? –
Я отправил весь код – Selvidian