Erro ao chamar método com system.out.println na classe main

Eu criei um método em outra classe menu, que ao executar o programa aparecerá algumas opções para o usuário digitar, porém ao executar o programa acontece erro, vou deixar o código e o erro abaixo.

Main:

Summary

package funcionario;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        
        String nome, departamento;
        double salario;
        String dataEntrada;
        String rg, cpf;
        int filhos;
        double aumento = 50;
       
       
       Funcionario func = new Funcionario(); 
       Scanner ler = new Scanner (System.in);
       
       new Menu().menu();
       
     
       System.out.println("Digite seu nome: ");
       nome = ler.next();
       System.out.println("Digite seu departamento: ");
       departamento = ler.next();
       System.out.println("Digite seu salário: ");
       salario = ler.nextDouble();
       System.out.println("Numero de filhos: ");
       filhos = ler.nextInt();
       System.out.println("Digite sua data de entrada: ");
       dataEntrada = ler.next();
       System.out.println("Digite seu RG: ");
       rg = ler.next();
       System.out.println("Digite seu CPF: ");
       cpf = ler.next();
       
       
       func.salarioD(salario);
       func.calcularGanhoAnual();
       func.inss();
       func.irrf();
       func.salarioF(filhos);
       System.out.println(func.toString(nome, departamento, salario, rg, cpf));
   
}

}

Menu:

Summary

package funcionario;
import java.util.Scanner;

public class Menu {

Scanner ler = new Scanner(System.in);
Menu men = new Menu();

int opcao;

void menu(){
    
    
    System.out.println("---------------------------------");
    System.out.println("--     OPCOES DISPONIVEIS      --");
    System.out.println("---------------------------------");
    System.out.println("1. INSERIR");
    System.out.println("2. SAIR");
    System.out.println("---------------------------------");    
    System.out.println("OPCAO: ");
    opcao = ler.nextInt();
}

void opcao(){
    
    do{
        
       System.out.println("Opção inválida, digite novamente: ");
       opcao = ler.nextInt();
       
    }
    
    while (opcao != 1 || opcao != 2);
           
}

void textoOpcao(){
    
    switch(opcao){
        
        case 1:
            System.out.println("Inserir");
            break;
        case 2:
            System.out.println("Sair");
            
            break;
    }
    
}

}

PS: existe algumas opções que está em outra classe, mas está funcionando tudo certinho, só está dando erro ao tentar “printar” o menu!

Dica troca o

do{
        
       System.out.println("Opção inválida, digite novamente: ");
       opcao = ler.nextInt();
       
    }
    
    while (opcao != 1 || opcao != 2);

por:

if(opcao != 1 || opcao != 2){
      System.out.println("Opção inválida, digite novamente: ");
      opcao = ler.nextInt();

}

fica bem melhor e evitar causar um loop infinito muito chato.

vc esta tentando chamar o menu() atravez do Menu men = new Menu(); porem deveria estar de uma dessas 2 formas:

1° forma de arrumar:
Menu men = new Menu();
men.menu();
por causa da forma que vc escreveu.

2° forma de arrumar:
alterar:void menu(){ para void Menu(){ assim quando vc usar Menu men = new Menu(); ele sera o 1 a ser chamado assim que ele iniciar.

Espero ter ajudado.

1 curtida

Ignora o comentário acima, consegui resolver hehe