public class Main {
После этих строк я начинаю задавать переменные, которые используются в различных методах (чтобы постоянно не создавать одну и туже переменную).
Там я создал переменную
in, которая отвечает за ввод данных из консоли.
static Scanner in = new Scanner(System.in);
А так же:
static String answer = "";
Впоследствии, чтобы считать ответ (например, Yes), я буду писать так:
answer = in.nextLine();
А теперь представим такую картину:
public static int Name1() {
System.out.println("Yes or No?");
answer = in.nextLine(); //Я ввожу Yes
//Там дальше код, который возвращает переменную (не answer)
}
public static int Name2() {
int whileStop = 0;
while (whileStop = 0) {
System.out.println("Da or Net?");
answer = in.nextLine();
if (answer.equals("Da") {
// Что-то написано
whileStop = 1;
} else if (answer.equals("Net") {
// И тут что-то написано
whileStop = 1;
} else {
System.out.println ("ERROR");
}
}
//Там дальше код, который возвращает переменную (не answer)
}
public static void main(String[] args) {
Name1();
Name2();
}
В консоли я получаю это:
Yes or No?
Yes
Da or Net?
Da or Net?
По идеи, после того, как я введу "Yes", у меня должны спросить "Da or Net", а после ждать моего ответа, но программа почему-то из первого метода сохраняет переменную answer и переносит ее во второй метод, пропуская при этом строчку:
answer = in.nextLine();
Вы скажете "А с чего ты взял это?", а я вам отвечу, что я решил проверить и немного изменил свой код:
public static int Name1() {
System.out.println("Yes or No?");
answer = in.nextLine(); //Я ввожу Yes
//Там дальше код, который возвращает переменную (не answer)
}
public static int Name2() {
int whileStop = 0;
while (whileStop = 0) {
System.out.println("-- \n" + answer + "-- \nDa or Net?");
answer = in.nextLine();
if (answer.equals("Da") {
// Что-то написано
whileStop = 1;
} else if (answer.equals("Net") {
// И тут что-то написано
whileStop = 1;
} else {
System.out.println ("ERROR");
}
}
//Там дальше код, который возвращает переменную (не answer)
}
public static void main(String[] args) {
Name1();
Name2();
}
И поэтому в консоли получается такое (уже после изменений):
Yes or No?
Yes
--
Yes
--
Da or Net?
Da or Net?
С чем это может быть связано, ведь переменная не может так просто перебраться из одного метода в другой без return и параметров.
UPD: Со static переменной разобрались, следующий вопрос: почему пропускается строка?