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?
}
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.
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?
/*
* 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);
}
}
}