Switch case Java ends for no reason

5

I have an example of switch-case with 8 options. However from case 7 it ends the program. It was for him to go back to the menu option after running. Does case have options limit?

Follow 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;
            }
        }

    }
}
    
asked by anonymous 12.08.2016 / 14:59

2 answers

6

The line while (menu != 7) { clearly states that it is to close the loop when typing 7. I probably wanted to use while (menu != 8) { . Another possibility is to make a while (true) { and within the output option to use a break label , so even if the number of the output option does not have to rearrange in two different places, 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:
    }
}
    
12.08.2016 / 15:03
6

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 be executed:

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);
    
12.08.2016 / 15:04