Switch case Java ends without reason

Asked

Viewed 562 times

6

I have an example of switch-case with 8 options. But from the case 7 he finishes the program. He was to return to the menu option after execution. The case has limit of options?

Follows the code:

import java.util.Scanner;

public class TesteCase {

    public static void main(String[] args) {

        int menu = 0;
        Scanner input = new Scanner(System.in);

        while (menu != 7) {
            System.out.println("\nMenu Principal\n");
            System.out.println(" 1) Vender Passagem");
            System.out.println(" 2) Cancelar Passagem");
            System.out.println(" 3) Relatório de Faturamento");
            System.out.println(" 4) Consultar Total de Lugares Disponíveis");
            System.out.println(" 5) Atualizar Informações do Piloto");
            System.out.println(" 6) Atualizar Informações do Co-Piloto");
            System.out.println(" 7) Atualizar Informações do Comissario");
            System.out.println(" 8) Sair do programa\n");
            menu = input.nextInt();

            switch (menu) {
            case 1:
                // Aceita overbook!
                System.out.print("case1 ");
                break;
            case 2:
                System.out.print("case2 ");
                break;
            case 3:
                System.out.print("case3 ");
                break;
            case 4:
                System.out.print("case4 ");
                break;
            case 5:
                System.out.println("case5 ");
                break;
            case 6:
                System.out.println("case6 ");
                break;
            case 7:// a partir do 7 ele termina o programa
                System.out.println("case7 ");
                break;
            case 8:
                System.out.println("case8 ");
                break;
            default:
                System.out.println("default ");
                break;
            }
        }

    }
}
  • 2

    try putting in while "(menu!= 8)"

  • Thank you! I screwed up!!!

2 answers

8

If it is option 8 that should end your application, while should check if it is different from 8:

while (menu != 8) {
            System.out.println("\nMenu Principal\n");
            System.out.println(" 1) Vender Passagem");
            System.out.println(" 2) Cancelar Passagem");
            System.out.println(" 3) Relatório de Faturamento");
            System.out.println(" 4) Consultar Total de Lugares Disponíveis");
            System.out.println(" 5) Atualizar Informações do Piloto");
            System.out.println(" 6) Atualizar Informações do Co-Piloto");
            System.out.println(" 7) Atualizar Informações do Comissario");
            System.out.println(" 8) Sair do programa\n");
            menu = input.nextInt();

            switch (menu) {
            case 1:
                // Aceita overbook!
                System.out.print("case1 ");
                break;
            case 2:
                System.out.print("case2 ");
                break;
            case 3:
                System.out.print("case3 ");
                break;
            case 4:
                System.out.print("case4 ");
                break;
            case 5:
                System.out.println("case5 ");
                break;
            case 6:
                System.out.println("case6 ");
                break;
            case 7:// a partir do 7 ele termina o programa
                System.out.println("case7 ");
                break;
            case 8:
                System.out.println("case8 ");
                break;
            default:
                System.out.println("default ");
                break;
            }
        }

You can change to do..while also, since it is a menu, and at least once it will run:

do {

        System.out.println("\nMenu Principal\n");
        System.out.println(" 1) Vender Passagem");
        System.out.println(" 2) Cancelar Passagem");
        System.out.println(" 3) Relatório de Faturamento");
        System.out.println(" 4) Consultar Total de Lugares Disponíveis");
        System.out.println(" 5) Atualizar Informações do Piloto");
        System.out.println(" 6) Atualizar Informações do Co-Piloto");
        System.out.println(" 7) Atualizar Informações do Comissario");
        System.out.println(" 8) Sair do programa\n");
        menu = input.nextInt();

        switch (menu) {
        case 1:
            // Aceita overbook!
            System.out.print("case1 ");
            break;
        case 2:
            System.out.print("case2 ");
            break;
        case 3:
            System.out.print("case3 ");
            break;
        case 4:
            System.out.print("case4 ");
            break;
        case 5:
            System.out.println("case5 ");
            break;
        case 6:
            System.out.println("case6 ");
            break;
        case 7:// a partir do 7 ele termina o programa
            System.out.println("case7 ");
            break;
        case 8:
            System.out.println("case8 ");
            break;
        default:
            System.out.println("default ");
            break;
        }
}while (menu != 8);

7


The line while (menu != 7) { clearly says that it is to close the loop when typing 7. Probably wanted to use while (menu != 8) {. Another possibility is to make a while (true) { and within the output option use a break label, so even if the number of the output option change does not have to arrange in two different places, so it gets more organized and more DRY. I would do so:

import java.util.Scanner;

public class TesteCase {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        while (true) {
            System.out.println("\nMenu Principal\n");
            System.out.println(" 1) Vender Passagem");
            System.out.println(" 2) Cancelar Passagem");
            System.out.println(" 3) Relatório de Faturamento");
            System.out.println(" 4) Consultar Total de Lugares Disponíveis");
            System.out.println(" 5) Atualizar Informações do Piloto");
            System.out.println(" 6) Atualizar Informações do Co-Piloto");
            System.out.println(" 7) Atualizar Informações do Comissario");
            System.out.println(" 8) Sair do programa\n");
            int menu = input.nextInt();
            switch (menu) {
            case 1:
                // Aceita overbook!
                System.out.print("case1 ");
                break;
            case 2:
                System.out.print("case2 ");
                break;
            case 3:
                System.out.print("case3 ");
                break;
            case 4:
                System.out.print("case4 ");
                break;
            case 5:
                System.out.println("case5 ");
                break;
            case 6:
                System.out.println("case6 ");
                break;
            case 7:// a partir do 7 ele termina o programa
                System.out.println("case7 ");
                break;
            case 8:
                System.out.println("case8 ");
                break finaliza;
            default:
                System.out.println("default ");
                break;
            }
        }
     finaliza:
    }
}

I put in the Github for future reference.

  • Wow! I blew it!!! Thank you!!!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.