В то время как цикл ведет себя неожиданно в Java

Я пытаюсь заставить мой цикл повторяться снова и снова, пока пользователь не введет "quit", затем он завершится.

По сути, я пытаюсь заставить своего робота-зяблика менять цвет носа в зависимости от того, как он позиционируется, но я не совсем понимаю, как получить его, чтобы пользователь мог снова его позиционировать после того, как он уже был расположен, чтобы цвет носа мог изменить цвет несколько раз. При первом запуске Finch выполнит код, но сразу же завершит работу.

Вот мой код:

public class finch {

public static final int INCREASE = 20;
public static final int SEC = 1000;
public static final int MAXSPEED = 255;
public static final int HALFSEC = 500;

public static Finch myFinch;
public static void main(String[] args) {
    myFinch = new Finch();

    Menu();

}

public static void Menu() {

    Scanner console = new Scanner(System.in);

    System.out.println("Enter your choice:" + "");

    int input;
    int input1;

    boolean flag=true;
    while(flag){

        System.out.println("1.\t" + "Rolling" + "Finch");
        System.out.println("2.\t" + "Obedient" + "Finch");
        System.out.println("3.\t" + "Exit");
        System.out.println();
        System.out.println("Enter your choice:");
        System.out.println();


        input = console.nextInt();
        flag=false;
        if (input == 1) {
            //input = DarkFinch;
            System.out.println("Position the Finch \"down\" or \"up\" to change nose color");
            rolling(myFinch);
        } else if (input == 2) {
            // input = ChasetheFinch;
            //  System.out.println("Chase The Finch");
        } else if (input == 3) {
            //    input = Exit;
            System.out.println("Goodbye");
        } else {
            //    System.out.println("Try again");

            flag=true;
            /*  return Menu(); */
        }
    }
}

public static boolean rolling(Finch myFinch) {//This method will change the Finches nose color depending on the Finches position.
    //"up" = place the finch upright standing on its tail



    for (int i = 1; i <= 20; i++) {


        while (myFinch.isBeakDown() || myFinch.isBeakUp()) {
            if (myFinch.isBeakDown()) {
                myFinch.setLED(0,0,255,3000);
            } else if (myFinch.isBeakUp()) {
                myFinch.setLED(255,0,0,3000);
            } else {
                myFinch.setLED(0,0,0,5000);
            }
        }

    }
    return true;
}

}

1 ответ

Не устанавливайте свой флаг = false перед условием для входного значения. Установите значение false в случае if(input == 3)

Другие вопросы по тегам