Como Chamar Funções do Método Main?

[b]Olá ! Esse é meu primeiro post aqui …
Gostaria de tirar uma dúvida, aparentemente por mais que eu não consiga visualizar eu acredito que seja muito simples. Mas eu não sei aonde estou errando …
Eu tenho que “criar” um relógio, não é necessário a hora do sistema …
O exercício é sobre sobrecarga de métodos …
O usuário pode altarar somente a hora … ou a hora e os minutos … ou a hora os minutos e os segundos …
Até ai tudo bem … mas eu preciso colocar o tratamento de erros, na classe clock.class … e não dentro da main !!
E eu não estou conseguindo imaginar como trazer as funções de entrada de parametros na main para a clock …
Se alguem entender minha dúvida, poderia me ajudar ?

PS: eu sei que pode ter outros erros, ou uso demasiados de funções e até mesmo comentários de forma errada no código, mas no momento eu precisaria de ajuda
somente em como tratar o erro de parametros entrados na Main, porem tratados na Clock.
Obrigado.

[code]import javax.swing.JOptionPane;

/**

  • FATEC Mogi das Cruzes - Ago/2010

  • Analise e Desenvolvimento de Sistemas

  • @author Henrique de Oliveira Silva

  • @contact henriique@gmail.com
    */
    public class Clock {

    /**

    • Declaração de variáveis inteiras e privadas para controle
      */
      private int clockTime = 12;
      private int clockMinute = 30;
      private int clockSecond = 59;

    /**

    • Setando variável de controle clockTime como pública
    • e “renomeando” para pubClockTime
    • @param pubClockTime
      /
      public void setpubClockTime(int pubClockTime){this.clockTime = pubClockTime;}
      /
      *
    • Setando variável de controle clockMinute como pública
    • e “renomeando” para pubClockMinute
    • @param pubClockMinute
      /
      public void setpubClockMinute(int pubClockMinute){this.clockMinute = pubClockMinute;}
      /
      *
    • Setando variável de controle clockSecond como pública
    • e “renomeando” para pubClockSecond
    • @param pubClockSecond
      */
      public void setpubClockSecond(int pubClockSecond){this.clockSecond = pubClockSecond;}

    /**

    • Entrada, tratamento e correção de paramentrs

    • entrados pelo usuário

    • @param clockTime
      */
      public void changeClock(int pubClockTime){

      if(pubClockTime > 23 || pubClockTime < 00){
      JOptionPane.showMessageDialog(null, +pubClockTime+" não é uma hora válida!", “Atenção!”, 1);
      }

             :::: PRECISO TRATAR OS ERROS AQUI :::: 
      

      /**
      * Atribui o valor entrado pelo usuário
      * a variável clockTime instanciada no método Main por pubClockTime
      */
      clockTime = pubClockTime;

    }

    /**

    • Entrada, tratamento e correção de paramentrs

    • entrados pelo usuário

    • @param clockTime

    • @param clockMinute
      */
      public void changeClock(int pubClockTime, int pubClockMinute){

      if(pubClockTime > 23 || pubClockTime < 00){
      JOptionPane.showMessageDialog(null, +pubClockTime+" não é uma hora válida!", “Atenção!”, 1);
      }

             :::: PRECISO TRATAR OS ERROS AQUI :::: 
      

    /**
    * Atribui o valor entrado pelo usuário
    * a variável clockTime instanciada no método Main por pubClockTime
    */
    clockTime = pubClockTime;

     if(pubClockMinute > 59 || pubClockMinute < 00){
         JOptionPane.showMessageDialog(null, +pubClockMinute+" não são minutos válidos!", "Atenção!", 1);
     }
    
               :::: PRECISO TRATAR OS ERROS AQUI :::: 
    

    /**
    * Atribui o valor entrado pelo usuário
    * a variável clockMinute instanciada no método Main por pubClockMinute
    */
    clockMinute = pubClockMinute;
    }

    /**

    • Entrada, tratamento e correção de paramentros

    • entrados pelo usuário

    • @param clockTime

    • @param clockMinute

    • @param clockSecond
      */
      public void changeClock(int pubClockTime, int pubClockMinute, int pubClockSecond){

      if(pubClockTime > 23 || pubClockTime < 00){
      JOptionPane.showMessageDialog(null, +pubClockTime+" não é uma hora válida!", “Atenção!”, 1);
      }

             :::: PRECISO TRATAR OS ERROS AQUI :::: 
      

    /**
    * Atribui o valor entrado pelo usuário
    * a variável clockTime instanciada no método Main por pubClockTime
    */
    clockTime = pubClockTime;

     if(pubClockMinute > 59 || pubClockMinute < 00){
         JOptionPane.showMessageDialog(null, +pubClockMinute+" não são minutos válidos!", "Atenção!", 1);
     }
    
               :::: PRECISO TRATAR OS ERROS AQUI :::: 
    

    /**
    * Atribui o valor entrado pelo usuário
    * a variável clockMinute instanciada no método Main por pubClockMinute
    */
    clockMinute = pubClockMinute;

     if(pubClockSecond > 59 || pubClockSecond < 00){
         JOptionPane.showMessageDialog(null, +pubClockSecond+" não são segundos válidos!", "Atenção!", 1);
     }
    
               :::: PRECISO TRATAR OS ERROS AQUI :::: 
    

    /**
    * Atribui o valor entrado pelo usuário
    * a variável clockSecond instanciada no método Main por pubClockSecond
    /
    clockSecond = pubClockSecond;
    }
    /
    *

    • Método para retorno das modificações efetuadas pelo usuário
    • @return Done
      */
      public String Done(){
      return(clockTime+":"+clockMinute+":"+clockSecond);
      }

}[/code]

[code]import javax.swing.JOptionPane;

/**

  • FATEC Mogi das Cruzes - Ago/2010

  • Analise e Desenvolvimento de Sistemas

  • @author Henrique de Oliveira Silva

  • @contact henriique@gmail.com
    */
    public class MasterClockSoucer {

    /**

    • Entry pointer do programa

    • @param args
      */
      public static void main(String[] args) {

      /**

      • Declarada e inicializada variável de controle das opções
        */
        int menu = 1;
        int userChoiceHour;
        int userChoiceMinute;
        int userChoiceSecond;

      /**

      • Declarada nova variável para instânciar a classe Clock
        */
        Clock userHour = new Clock();

      /**

      • Laço de reptição para manter o menu sempre
      • como retorno após qualquer alteração efetuada pelo
        */
        while(menu != 0){
      /**
        * Entrada dos parâmetros pelo usuário
        * efetuada conversão de tipo - String para Int -
        * E apresentação da hora atual - padrão do programa ou atualizada pelo usuário
        */
       menu = Integer.parseInt(JOptionPane.showInputDialog(null, "Ecolha a opção para ser alterada:\n\n "+
                                                                 "1 - Hora\n "+
                                                                 "2 - Hora e Minutos\n "+
                                                                 "3 - Hora, Minutos e Segundos\n"+
                                                                 " 0 - Sair.\n\n"+
                                                                 "                  Hora Atual: "+userHour.Done()+"s", "JavaClock", JOptionPane.PLAIN_MESSAGE));
      
       /**
        * Inicio da rotina para seleção e tratamento dos parâmetros
        * entrados pelo usuário
        */
       switch(menu){
           /**
            * Tratamento caso seja selecionada a opção 1 no menu
            */
           case 1:
                //:::::: HORAS ::::::::
      
               /**
                * Declarada e inicializada nova variável para receber
                * a Hora escolhida pelo usuário para alteração
                */
               userChoiceHour = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite a Hora desejada: ", "JavaClock", JOptionPane.PLAIN_MESSAGE));
      
               /**
                * Referência o novo objeto ao método changeClock da classe relogio
                */
               userHour.changeClock(userChoiceHour);
      
               /**
                * Confirmação de alteração bem sucedida
                */
               JOptionPane.showMessageDialog(null, "Alteração efetuada com sucesso!", "JavaClock", 1);
      
               /**
                * Retorna das alterações feitas pelo usuário
                */
               JOptionPane.showMessageDialog(null, "Hora alterada para: "+userHour.Done()+"s.", "JavaClock", 2);
           // Break case 1
           break;
      
           /**
            * Tratamento caso seja selecionada a opção 2 no menu
            */
           case 2:
               // :::::: HORAS ::::::::
      
               /**
                * Declarada e inicializada nova variável para receber
                * a Hora escolhida pelo usuário para alteração
                */
               userChoiceHour = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite a Hora desejada: ", "JavaClock", JOptionPane.PLAIN_MESSAGE));
      
               // :::::: MINUTOS ::::::::
      
               /**
                * Declarada e inicializada nova variável para receber
                * os Minutos escolhidos pelo usuário para alteração
                */
               userChoiceMinute = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite os minutos desejados: ", "JavaClock", JOptionPane.PLAIN_MESSAGE));
      
               /**
                * Referência o novo objeto ao método changeClock da classe relogio
                * para alteração das Horas e Minutos
                */
               userHour.changeClock(userChoiceHour, userChoiceMinute);
      
               /**
                * Confirmação de alteração bem sucedida
                */
               JOptionPane.showMessageDialog(null, "Alterações efetuadas com sucesso!", "JavaClock", 1);
      
               /**
                * Retorna das alterações feitas pelo usuário
                */
               JOptionPane.showMessageDialog(null, "Hora alterada para: "+userHour.Done()+"s.", "JavaClock", 2);
            // Break case 2
            break;
      
           /**
            * Tratamento caso seja selecionada a opção 2 no menu
            */
           case 3:
               // :::::: HORAS ::::::::
      
               /**
                * Declarada e inicializada nova variável para receber
                * a Hora escolhida pelo usuário para alteração
                */
               userChoiceHour = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite a Hora desejada: ", "JavaClock", JOptionPane.PLAIN_MESSAGE));
      
               // :::::: MINUTOS ::::::::
      
               /**
                * Declarada e inicializada nova variável para receber
                * os Minutos escolhidos pelo usuário para alteração
                */
               userChoiceMinute = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite os minutos desejados: ", "JavaClock", JOptionPane.PLAIN_MESSAGE));
      
               // :::::: SEGUNDOS ::::::::
      
               /**
                * Declarada e inicializada nova variável para receber
                * os Minutos escolhidos pelo usuário para alteração
                */
               userChoiceSecond = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite os segundos desejados: ", "JavaClock", JOptionPane.PLAIN_MESSAGE));
      
               /**
                * Referência o novo objeto ao método changeClock da classe relogio
                * para alteração dos Segundos
                */
               userHour.changeClock(userChoiceHour, userChoiceMinute, userChoiceSecond);
      
               /**
                * Confirmação de alteração bem sucedida
                */
               JOptionPane.showMessageDialog(null, "Alterações efetuadas com sucesso!", "JavaClock", 1);
      
               /**
                * Retorna das alterações feitas pelo usuário
                */
               JOptionPane.showMessageDialog(null, "Hora alterada para: "+userHour.Done()+"s.", "JavaClock", 1);
            // Break 3
            break;
      
           /**
            * Tratamento caso seja selecionada a opção 0 no menu
            */
           case 0:
                /* Declaração e incialização da variável closeSistem
                 * configuração da variável para receber JOptionPane.showCONFIRMDialog
                 * (showConfirmDialog(null ,"message", "title", JOptionPane.YES_NO_OPTION, 2)
                 */
               int closeSistem = JOptionPane.showConfirmDialog(null, "Deseja realmente encerrar a sessão?", "Atenção!", JOptionPane.YES_NO_OPTION , 2);
               // Se variável closeSistem for igual (==) YES_OPTION - fechar o sistema
               if (closeSistem == JOptionPane.YES_OPTION){
                   System.exit(0);
               }
               // Senão, retornará para o menu principal
               else{
                   menu = 1;
               }
      
           // Break 0
           break;
      
           // Default para captura de opções que não são válidas no menu
           default:
               // Erro!
               JOptionPane.showMessageDialog(null, +(menu)+" não é uma opção válida!", "Atenção!", 2);
               
        } // While
      

      } // Switch

    } // Main

} // MasterClockSoucer[/code]

Oi,
Eu não entendi muito bem o seu problema cara, você quer puder chamar por exemplo um menu de dentro da classe clock?
tipo chama o JOptionPane.showInputDialog() de dentro da classe Clock ???

Eu fiz algumas modificações aqui na suas classes, nõ está bom, mais ficou mais claro.

Clock.java

import javax.swing.JOptionPane;

public class Clock {

    private int clockTime = 12;
    private int clockMinute = 30;
    private int clockSecond = 59;
	
	
	/* Funcoes de verificação */
	private boolean isHoraCorreta(int hora){
		 if(hora > 23 || clockTime < 00){
            JOptionPane.showMessageDialog(null, +hora+" não é uma hora válida!", "Atenção!", 1);
            return false;
        }
       	return true;
	}
	
	private boolean isMinutosSegundosCorreto(int tempo){
		if(tempo > 59 || tempo < 00){
            JOptionPane.showMessageDialog(null, +tempo+" não são válidos !", "Atenção!", 1);
            return false;
        }
        return true;
	}	
	
	
	/**
	 * Pede horario e já o transforma para inteiro
	 **/
	private int pedeHorario(String quem){
		String resposta = JOptionPane.showInputDialog(null, "Digite "+quem);
		return Integer.parseInt(resposta);
	}
	
	/**
	 * Muda somente a hora
	 **/
    public void changeClock(int hora){
    	if(isHoraCorreta(hora)){
    		clockTime = hora;
    	}
    }
	
	/**
	 * Muda hora e minuto
	 **/
    public void changeClock(int hora, int minuto){
    	
        if(isHoraCorreta(hora)){
        	clockTime = hora;
        	
        	if(isMinutosSegundosCorreto(minuto)){
        		clockMinute = minuto;
        	}
        }
    }

	/**
	 * Muda hora minuto e segundos
	 **/
    public void changeClock(int hora, int minuto, int segundos){

        if(isHoraCorreta(hora)){
        	clockTime = hora;
        	
        	if(isMinutosSegundosCorreto(minuto)){
        		clockMinute = minuto;
        		
        		if(isMinutosSegundosCorreto(segundos)){
        			clockSecond = segundos;
        		}
        	}
        }
    }
	
	public void mostraMenu(){
		
        int menu = 1;
        int hora;
        int minuto;
        int segundos;

        
       	while(menu != 0){

       		menu = Integer.parseInt(JOptionPane.showInputDialog(null, 
	          	"Ecolha a opção para ser alterada:\n\n "+
	          	"1 - Hora\n "+
	            "2 - Hora e Minutos\n "+
				"3 - Hora, Minutos e Segundos\n"+
	            " 0 - Sair.\n\n"+
	            "Hora Atual: "+toString()+"s", "JavaClock", JOptionPane.PLAIN_MESSAGE));

       
      		switch(menu){
                case 1:
                    hora  = pedeHorario("a(s) hora(s)");
                    changeClock(hora);
                	break;

                case 2:
                   	hora  = pedeHorario("a(s) hora(s)");
				    minuto = pedeHorario("o(s) minuto(s)");
	                changeClock(hora, minuto);
                 	break;

                case 3:
                    hora  = pedeHorario("a(s) hora(s)");
				    minuto = pedeHorario("o(s) minuto(s)");
					segundos = pedeHorario("o(s) segundos(s)");
	               	changeClock(hora, minuto, segundos);
                 	break;

                case 0:
                	int closeSistem = JOptionPane.showConfirmDialog(null, "Deseja realmente encerrar a sessão?", "Atenção!", JOptionPane.YES_NO_OPTION , 2);
                    
                    if (closeSistem == JOptionPane.YES_OPTION){
                        System.exit(0);
                    }else{
                        menu = 1;
                    }

                	break;	
                default:
                    JOptionPane.showMessageDialog(null, +(menu)+" não é uma opção válida!", "Atenção!", 2);
                    
             } 
        }
	}
	
	/**
	 * Override no metodo toString()
	 * Que exerce a mesma função que faria Done()
	 **/
    public String toString(){
        return(clockTime+":"+clockMinute+":"+clockSecond);
    }

}

MasterClockSource

import javax.swing.JOptionPane;


public class MasterClockSource {

    public static void main(String[] args) {
		Clock relogio = new Clock();
		relogio.mostraMenu();
    }

} 

Se não for isso tenta explicar melhor a sua dúvida…
T+

Oi !! Obrigado por ter respondido !!
Então o que eu preciso é colocar o tratamento de erros aqui dentro, existe uma forma de faze-lo ??

[code]public void changeClock(int pubClockTime){

     if(pubClockTime > 23 || pubClockTime < 00){  
         JOptionPane.showMessageDialog(null, +pubClockTime+" não é uma hora válida!", "Atenção!", 1);  
     }
     else{
         [DA ERRO NO "userChoiceHour"]
         userChoiceHour = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite a Hora desejada: ", "JavaClock", JOptionPane.PLAIN_MESSAGE));
     }

               :::: EU PRECISO QUE O USUÁRIO TODA VEZ QUE DIGITE UM HORARIO INCORRETO,
               :::: APOS APARECER A MENSAGEM DE ERRO, EU PRECISO QUE 
               :::: ELE CONTINUA NA TELA DE : "DIGITE A HORA DESEJADA"


       /** 
         * Atribui o valor entrado pelo usuário 
         * a variável clockTime instanciada no método Main por pubClockTime 
         */  
         clockTime = pubClockTime;  

 } [/code]

Eu vi o seu código e para mim ficou bom, mas eu precisava entregar da forma que eu fiz.
Porque preciso da avaliação dele =/

Entao, uma forma seria você colocar um while da seguinte forma:

while(!isHoraCorreta(hora)){
	hora  = pedeHorario("a(s) hora(s)");
}

Humm … não deu certo ! Mas obrigado !
Se alguem mais quiser tentar me ajudar, poderia usar as minhas variáveis ? :roll:

Ao invez de tentar tratar o erro por if/else…porque não utiliza um bloco try-Catch?

Com try-Catch eu consigo sim …
Mas eu precisaria usar o try-Catch para tratar os erros na Classe Clock.
E eu não sei como, sem usar algumas das variáveis da Main.
E sempre dá erro quando tento usar algumas da Main dentro da Clock.
Mas obrigado =)