Menus selecionáveis do while?

Preciso fazer menus selecionáveis, onde o usuário vai digitar um número e o programa leva ele até o módulo desejado, a principio tenho esse código com apenas a opção “1- Financeiro”, mas está me voltando erro, onde está o erro? como posso levar o usuário até as outras opções?

import java.util.Scanner;

public class AvaliaçãoContinuada2 {

       public static void main(String[] args) {
           Scanner sele = new Scanner (System.in);
           boolean escolhido = true;
           int opç;
           do
           {
               //SELEÇÃO DOS MÓDULOS
               System.out.println("ESCOLHA O SETOR DESEJADO:");
               System.out.println("1- Financeiro");
               System.out.println("2- Contas");
               System.out.println("3-RH");
               System.out.println("4- DO");
               System.out.println("5- TI");
               System.out.println("6- Sair ");
               opç = sele.nextInt();
               if (opç == 1)
               {
                   System.out.println("FINANCEIRO");
                   break;
               }
           }while(//FIM DO
        // TODO code application logic here
    }
    
}

E qual o erro retorna?

Exception in thread “main” java.lang.RuntimeException: Uncompilable source code - Erroneous tree type:
at avaliaçãocontinuada2.AvaliaçãoContinuada2.main(AvaliaçãoContinuada2.java:16)

O erro diz que seu código não é compilável, creio que por causa dessa variável

int opç; //errado

Evite usar caracteres especiais e de acentuação como ç, ã. é. etc…

int opc; //correto

Outra coisa é a condição que falta dentro do while lá embaixo…

} while(opc != 6); //continua enquanto diferente de sair...

Se você está com essas dificuldades, sugiro começar estudar java por essa apostila…

1 curtida

Bom o @LostSoldier respondeu certinho, em vez de if seria melhor utilizar o switch
ex:

public static void main(String[] args) {
        Scanner sele = new Scanner(System.in);
        boolean escolhido = true;
        int opc;
        do {
            //SELEÇÃO DOS MÓDULOS
            System.out.println("ESCOLHA O SETOR DESEJADO:");
            System.out.println("1- Financeiro");
            System.out.println("2- Contas");
            System.out.println("3-RH");
            System.out.println("4- DO");
            System.out.println("5- TI");
            System.out.println("6- Sair ");
            opc = sele.nextInt();
            switch(opc){
                case 1:
                    System.out.println("FINANCEIRO");
                    break;
                case 2:
                    System.out.println("CONTAS");
                    break;
            }
        } while (opc != 6);
    }

mas ao observar seu código [quote=“Dirley_Santana, post:1, topic:347180”]
if (opç == 1)
{
System.out.println(“FINANCEIRO”);
break;
}
[/quote]
você está parando o loop quando se selecionar uma opção, se esse é o caso, o certo seria utilizar somente o switch e mais nada ex:

public static void main(String[] args) {
        Scanner sele = new Scanner(System.in);
        boolean escolhido = true;
        int opc;

        //SELEÇÃO DOS MÓDULOS
        System.out.println("ESCOLHA O SETOR DESEJADO:");
        System.out.println("1- Financeiro");
        System.out.println("2- Contas");
        System.out.println("3-RH");
        System.out.println("4- DO");
        System.out.println("5- TI");
        System.out.println("6- Sair ");
        opc = sele.nextInt();
        switch (opc) {
            case 1:
                System.out.println("FINANCEIRO");
                break;
            case 2:
                System.out.println("CONTAS");
                break;
        }

    }
1 curtida

Então, é pq o objetivo é após escolher o modulo, dentro do modulo ter algumas instruções como calculos e etc.

Então neste caso, vc utiliza a dica q eu dei, que é utilizando os switch é lá dentro do bloco do case vc entrar dentro de outro modulo e tudo mais :slight_smile:

1 curtida

Outra dica é trocar esses números fixos por constantes ou enum evitando números mágicos, hoje você sabe cada código desse menu, mas e daqui a 5 anos?

Usando a dica do @Jeanderson_Silva do switch, combine-o com constantes por exemplo…

 public static final int FINANCEIRO = 1;
 public static final int CONTAS = 2;
 public static final int RH = 3;
 ...

 public static void main(String[] args) {
 ...
     switch(opc) {
         case FINANCEIRO:
             ...
         case CONTAS:
             ...
         case RH:
             ...
     }
}
1 curtida

Deu certo da forma que você falou, obrigado mesmo pela ajuda.

De nada brother :slight_smile: