Como retornar ao método main dentro de outro método?

Galera, primeiramente desculpe o incômodo pois minha dúvida é bem básica.

Eu tenho um código que dividi em blocos, por costume mesmo, já que eu estava vendo programação estruturada a uns tempos, porém desta vez eu tenho uma outra classe de onde eu chamo os métodos (mas não vem ao caso). Eu gostaria que, ao terminar um dos blocos da atual classe eu pudesse voltar ao método principal. Já tentei colocar main(args); e coisas do tipo mas ele dá erro.

Como eu poderia fazer, e seria melhor eu simplesmente deixar todos os blocos dentro do main? Desde já agradeço.

Segue abaixo um trecho do código:

public class GettersSetters {

public static Scanner leitor = new Scanner(System.in);
public static Relogio rel = new Relogio();

public static void main(String[] args) {

    int op = 0;
    
    String nome;
    System.out.println("seu nome é:");
    nome = leitor.nextLine();
    
    System.out.println("O que você deseja?");
    System.out.println("");
    System.out.println("1 - Informar horário.");
    System.out.println("2 - Ver horário.");
    op = leitor.nextInt();
    switch(op){
        case 0:
            System.out.println("Por favor informe uma opção.");
            break;
        case 1:
            Escolher();
            break;
        case 2:  
            // Ainda vou fazer este
            break;
        default:
            System.out.println("Opção inválida. Escolha novamente.");
            
    }
    
}

public static void Escolher(){
    int op2 = 0;
    
    System.out.println("Escolha o que deseja informar: ");
    System.out.println("");
    System.out.println("1 - Hora");
    System.out.println("2 - Minuto");
    System.out.println("3 - Segundo");
    op2 = leitor.nextInt();
    
    switch(op2){
        case 1:
            
           /* Aqui ele vai para o bloco informar Hora, que vai ser de onde eu quero voltar para o main(), 
           * após a hora ser informada. 
           */

            infHora();
            break;
        case 2:
            infMinuto();
            break;
        case 3:
            infSegundo();
            break;
        default:
            System.out.println("Opção inválida. Escolha novamente.");
    }
    
}

//Informar Hora

public static void infHora(){
    int valorHora;
    
    System.out.println("Informe a hora: ");
    valorHora = leitor.nextInt();

    if(valorHora != 0){
        rel.setHora(valorHora);

    } else{
        System.out.println("Valor inválido. Informe novamente.");
        infHora();
    }

   // Após informada a hora, voltar ao main. É possível?
}

}

Você tem que criar um laço de repetição para ficar voltando o menu, um laço muito usado em exemplos como o seu é o do while

Eu conheço os laços de repetição, mas como você pôde ver eu coloquei as operações em blocos separados do método principal, creio eu que um laço não possa engloba-los do jeito que estão.

Você nem tentou né.

Um bloco (no caso métodos) nada mais é que um conjunto de linhas de código

Cara, a única dica que posso te dar é (além do que o Mike disse) é que o método main ainda é um método. Pense nisso!

Desculpe Mike, eu tentei mas não deu certo. Dá erro de sintaxe, ou eu não soube tentar da maneira correta. Neste caso, você consegue me dar um exemplo de como seria esse do…while com base no código acima?

Okay.

Posta o seu código e mostra onde esta o erro.

No geral é só colocar todo o menu dentro do do while que funciona

do {
    //Menu
    //Switch
} while(opcaoMenu != 3);//Supondo que a opção 3 seja de sair

Tenta deste modo:

Segue um exemplo:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.unit.preconceito;

import java.util.ArrayList;
import java.util.Collections;
import static java.util.Collections.list;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;

/**
 *
 * @author Matheus
 */
public class Principal {
    
    /*envia mensagem para tela informando que a opcao e invalida*/
        public static void mensagem(int opcao) throws Exception
        {

            try
            {

//                if (opcao == null || null == opcao)
//                {
//                    System.out.println("OPCAO INVALIDA. TENTE NOVAMENTE!!!\n\n\n");
//                    Thread.sleep(2000);
//                    return;
//                }

//                int op = Integer.parseInt(opcao);
               

                if (opcao < 0 || opcao > 5)
                {
                    System.err.println("OPCAO INVALIDA. TENTE NOVAMENTE!!!\n\n\n");
                    Thread.sleep(2000);
                }
                else

                if (opcao == 0)
                {
                    System.out.println("\tBYEE!!!\n\n\n");
                    System.exit(0);
                }
                
            }
            catch (Exception ex)
            {
                System.out.println("O FORMATO DOS CARACTERES NAO EXISTENTE.\n\t TENTE NOVAMENTE\n\n\n"+ex.getMessage());
            }


        }
    
       /*metodo para fazer devida escolhas de 0 : SAIR e 1: COPIAR ARQUIVOS para a pasta bin do Workbank*/
        public static void escolhas()
        {
            
            System.out.println("*********************PRECONCEITO*****************");
            System.out.println("*\t\t\tUNIT\t\t\t*");
            System.out.println("*************************************************");
            System.out.println("*\t0: SAIR\t\t\t\t\t*");
            System.out.println("*\t1: CADASTRAR\t\t\t\t*");
            System.out.println("*\t2: LISTAR OCORRENCIAS \t\t\t*");
            System.out.println("*\t3: LISTAR ENVOL. COM SUAS OCORRENCIAS\t*");
            System.out.println("*\t4: LISTAR PORCENTAGEM DE OCORRENCIAS\t*");
            System.out.println("*\t5: LISTAR LOCALIDADE DE OCORRENCIAS\t*");
            System.out.println("*********************PRECONCEITO*****************");
            System.out.print("Por Favor selecione uma opção [0-5]:");
        }
    
    
    public static void main(String [] unitargs) throws Exception {
        Scanner scan = new Scanner(System.in);
    
    PreconceitoTransfer _preconceitoTransfer     = new PreconceitoTransfer();//cria um atribtuo(instancia) da classe que contem getters e setters
    List<PreconceitoTransfer> _lista             = new ArrayList<PreconceitoTransfer>(); //arraylist para pegar tudo
    List<String> nomes                           = new ArrayList<String>();// atributo de nomes

        
        String ocorrenciapreconceito                = null;//atributo para identificar o tipo de preconceito
        String localocorrencia                      = null;//atributo para identificar o local da ocorrencia
        String descricao                            = null;//atributo para identificar a minha ocorrencia

        int op = -1;
        escolhas();
        op=scan.nextInt();
        mensagem(op);
          
        PreconceitoTransfer pre = new PreconceitoTransfer(ocorrenciapreconceito,localocorrencia,descricao,nomes);//cria uma outra instancia para nao perder os valores passados que serao depois inseridos e comparados em cada condicao onde tenha map
       
        while(op!=0){
  
            if(op==1){
                
                System.out.println("Informe ocorrencia preconceito:");
                ocorrenciapreconceito = scan.next().toUpperCase();
                scan.nextLine();
                System.out.println("Informe local acontecimento:");
                localocorrencia = scan.nextLine().toUpperCase();
                System.out.println("Informe descricao preconceito:");
                descricao = scan.nextLine().toUpperCase();
                System.out.println("Informe nome da pessoa:");
                nomes.add(scan.nextLine().toUpperCase());

                _preconceitoTransfer.setOcorrenciapreconceito(ocorrenciapreconceito);
                _preconceitoTransfer.setLocalocorrencia(localocorrencia);
                _preconceitoTransfer.setDescricao(descricao);
                _preconceitoTransfer.setNomes(nomes);
                
                pre = new PreconceitoTransfer(_preconceitoTransfer.getOcorrenciapreconceito(),_preconceitoTransfer.getLocalocorrencia(),_preconceitoTransfer.getDescricao(),_preconceitoTransfer.getNomes());
                _lista.add(pre);
                
            }
          
            if(op==2){
                    Map<String, Integer> _contem                 = new TreeMap<String, Integer>();//criacao de map para identificacao de chave,valor
                    for (PreconceitoTransfer nome : _lista) {
        
                        if (!_contem.containsKey(nome.getOcorrenciapreconceito())){
                            _contem.put(nome.getOcorrenciapreconceito(), 0);
                        }
                            _contem.put(nome.getOcorrenciapreconceito(), _contem.get(nome.getOcorrenciapreconceito()) + 1);
                    }

                    for (Map.Entry<String, Integer> entry : _contem.entrySet()) {
                        if(entry.getValue()>=5){    
                            System.out.println(entry.getKey()+":"+ entry.getValue());
                        }
                    }
            }
            
            if(op==3){
                        

               Map<String, Integer> _contem                 = new TreeMap<String, Integer>();//criacao de map para identificacao de chave,valor   
               for (PreconceitoTransfer nome : _lista) {
        
                        if (!_contem.containsKey(nome.getOcorrenciapreconceito())){
                            _contem.put(nome.getOcorrenciapreconceito(), 0);
                        }
                            _contem.put(nome.getOcorrenciapreconceito(), _contem.get(nome.getOcorrenciapreconceito()) + 1);                                   
                        }
                        
                        for (Map.Entry<String, Integer> entry : _contem.entrySet()){
                             System.out.println("["+entry.getKey()+"]:\n");  
                        }
                        for (String nome:nomes) {
                            System.out.println(""+nome);
                        }
                        
                             
                    System.out.println("\n");
            }
            
 
            
            if(op==4){
                
                    Map<String, Integer> _contem                 = new TreeMap<String, Integer>();//criacao de map para identificacao de chave,valor
                    for (PreconceitoTransfer nome : _lista) {
        
                        if (!_contem.containsKey(nome.getOcorrenciapreconceito())){
                            _contem.put(nome.getOcorrenciapreconceito(), 0);
                        }
                            _contem.put(nome.getOcorrenciapreconceito(), _contem.get(nome.getOcorrenciapreconceito()) + 1);
                    }
                    int totalporcentagem = 0;
                    for (Map.Entry<String, Integer> entry : _contem.entrySet()) {
                            totalporcentagem=(entry.getValue()*100)/_lista.size();
                            System.out.println("["+entry.getKey()+"]:"+totalporcentagem);
                        
                    }     
                
            }
                   
                 
            if(op==5){
                
                    Map<String, Integer> _contem                 = new TreeMap<String, Integer>();//criacao de map para identificacao de chave,valor
                    for (PreconceitoTransfer nome : _lista) {
        
                        if (!_contem.containsKey(nome.getLocalocorrencia())){
                            _contem.put(nome.getLocalocorrencia(), 0);
                        }
                            _contem.put(nome.getLocalocorrencia(), _contem.get(nome.getLocalocorrencia()) + 1);
                    }

                    for (Map.Entry<String, Integer> entry : _contem.entrySet()) {    
                            System.out.println(entry.getKey()+":"+ entry.getValue());
                    }
            }
        
            escolhas();
            op=scan.nextInt();
            mensagem(op);
            
        }
        
        
    }
}

Por que preconceito? .-.

Foi um projeto de um amigo meu na qual eu fiz tem um certo tempo!