Jourloy
@Jourloy
NodeJS разработчик

[Неактуально] Что не так в моем java-коде?

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 переменной разобрались, следующий вопрос: почему пропускается строка?
  • Вопрос задан
  • 126 просмотров
Решения вопроса 1
xez
@xez Куратор тега Java
Senior Junior Roo
ведь переменная не может так просто перебраться из одного метода в другой без return и параметров.

Ваша переменная - static она одна для всего класса. Вы же сами ее создали "чтобы постоянно не создавать одну и туже переменную"
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы