AGRADECIMENTO...

Pessoal, Gostaria de pedir desculpas aqueles que deixam perguntas/comentários/elogios/críticas e ainda não foram respondidos.

Aproveito a oportunidade para informar a todos que devido a correria do dia a dia não conclui o curso de BSI, por isso meus conhecimentos são limitados rsrsrs...

Ainda não retirei o blog do ar porque tem ajudado a diversos estudantes, principalmente os iniciantes.

As vezes, quando o trabalho me permite, ainda arrisco tentar resolver algumas questões rs... mas para não deixar esse blog parar no tempo, o ESTUDANTE que quiser enviar a resolução de alguma questão (código próprio) para o meu e-mail, terei o prazer de posta-la neste blog e será mantido a autoria.

Desde já agradeço a todos pelas visitas e desejo bons estudos.

Thiago Campos
(srthiago@hotmail.com)

quarta-feira, 5 de setembro de 2012

Conversão de horas, minutos em segundos usando função, substring, Math.abs, indexOf e try...catch.

6. Receba 2 horários e exiba a diferença entre eles em segundos. A entrada destes horários pode ocorrer em qualquer ordem.
Dica: transforme os dois horários para segundos.
Código Java
//Autor: Thiago Campos
//Data: 05.09.2012


import javax.swing.JOptionPane;

public class Segundos {
    //variavel global  
    public static String[] horaCompleta = new String[2]; //vai receber o horario completo
   
    public static void main(String[] args) { //inicio do main
        //variaveis
        int resultadoSegundos = 0; //os segundos
        int posicao = 0; //vai armazenar a posição onde esta os (dois pontos ':')
        String strHoras, srtMinutos, strSegundos;
        int[] horarioSeg = new int[2]; //O vetor guarda o total de segundos que retorna
        int difSeg = 0, hora, minutos, segundos;
        int a = 0; //inicialização do indice do vetor
        int repita = 0; //variavel responsavel pelo enlace
       
        do {
            try { //validação
                repita = 0; //variavel do enlace
               
                //Entrada de dados
                a = 0; //Indice do vetor
                horaCompleta[a] = JOptionPane.showInputDialog("Informe 1 hora");
                posicao = horaCompleta[a].indexOf(":") - 2; //O uso de (-2) é para ver o inicio da hora
                horarioSeg[a] = Converte(posicao, a);

                //Entrada de dados
                a = 1; //Indice do vetor
                horaCompleta[a] = JOptionPane.showInputDialog("Informe 2 hora");
                horarioSeg[a] = Converte(posicao, a);

                //Calculo da diferença entre os segundos
                difSeg = Math.abs(horarioSeg[0] - horarioSeg[1]);

                //Saida do resultado
                JOptionPane.showMessageDialog(null, "A diferença é: " + difSeg + " segundo(s)");
            } catch (Exception e) {
                repita = 1; //variavel do enlace
               
                JOptionPane.showMessageDialog(null, "Horario digitado no formato errado."
                        + "\n Obedeça o seguinte formato: hh:mm:ss");
            }
        } while (repita == 1);
    } //fim do main
/*
  * ----------------------------------------------------------------------------
  *                FUNÇAO PARA CONVERTER HORARIO EM SEGUNDOS
  * ----------------------------------------------------------------------------
*/

    public static int Converte(int pos, int i) {
        //variaveis locais da função
        int totalSegundos = 0; //Armazena os segundos
        int hora, minutos, segundos;
        String strHoras, srtMinutos, strSegundos; //recebe os algarismos correspondentes
        //Para calculos da hora em minutos depois em segundos
       
            //O vetor repassar 2 algarismo
            strHoras = horaCompleta[i].substring(pos, pos + 2);
            srtMinutos = horaCompleta[i].substring(pos + 3, pos + 5);
            strSegundos = horaCompleta[i].substring(pos + 6, pos + 8);
           
            //Converte os algarismos em inteiros e transforma-os em segundos
            hora = Integer.parseInt(strHoras) * 3600;
            minutos = Integer.parseInt(srtMinutos) * 60;
            segundos = Integer.parseInt(strSegundos);

            //Os resultados em segundos são somados
            totalSegundos = hora + minutos + segundos;
        return totalSegundos; //Retorno da função
    } //fim da função Converte
} //fim da classe

Nenhum comentário:

Postar um comentário