sábado, 5 de agosto de 2017

Relógio digital em java

Me pareceu uma boa opção criar um relógio digital em java.
Sábado frio e nada mais importante pra fazer...
Na verdade comecei a criar este relógio digital
há alguns dias na minha cabeça, juntando as lógicas
suficientes principalmente para as entradas de dados.
Como seria desagradável receber um caractere na entrada
e ver o programa ser finalizado só por isto,
ou se na entrada for inserido um número que não corresponda
o que se pede no momento, que terrível.
Então abri meu eclipse por aqui e comecei a programar,
que bela IDE, quantas sugestões certeiras,
quanta ajuda para quem programa em qualquer nível.
Pra ser sincero o código não é complicado, só se exige
bons conhecimentos em lógica de programação
e um bom nível em estruturas de dados, coisas que tiro de letra
fácil, pelos mais de 4 anos programando em C.

Veja abaixo uma imagem do programa em execução:



Veja abaixo o código do programa


import java.awt.Toolkit;
import java.util.Scanner;

public class PROJETO {
     public static void Inform ( ) {
         J jht = new J ( );
         // //////////////////////////////////////////////////////////////////
         // Parâmetros da função printfx
         // Coord x, Coord y, String, cor de frente, cor de fundo,
         // Comprimento, Tempo, frequência, duração.
         jht.printfx ( 22, 18, "Por: ", 12, 15, 5, 0, 0, 0 );
         jht.printfx ( 27, 18, "Samuel Lima", 9, 15, 11, 0, 0, 0 );
         jht.printfx ( 22, 19, "sa_sp10@hotmail.com", 0, 15, 20, 0, 0, 0 );
         jht.printfx ( 33, 22, "MUITO OBRIGADO", 12, 15, 15, 0, 0, 0 );
     }
/////////////////////////////////////////////////////////////////////////
     // Esta função não permite a entrada de caracteres
     public static int relogio ( char c ) {
         int i;
         for ( i = 0; i < ( c ); i++ ) {
              if ( c < '0' || c > '9' )
                   return 0;
         }
         return 1;
     }
/////////////////////////////////////////////////////////////////////////
     static String str_1;
     static String str_2;
     static String str_3;
     static int hora, min, seg, hr = 0, mn = 0, sg = 0;
/////////////////////////////////////////////////////////////////////////
     public static boolean acerta_hora ( ) {
         if ( hora > 23 ) {
              return true;
         }
         return false;
     }
     public static boolean acerta_min ( ) {
         if ( min > 59 ) {
              return true;
         }
         return false;
     }
     public static boolean acerta_seg ( ) {
         if ( seg > 59 ) {
              return true;
         }
         return false;
     }
/////////////////////////////////////////////////////////////////////////
     public static void main ( String [ ] args ) throws Exception {
         J jht = new J ( );
         jht.Moldura ( 1, 24, 2, 78, 15 );   
         //Este laço repetidor força a repetição
         //em caso de erros nas entradas de dados
         do{
              jht.cls ( );
              jht.poscolor ( 20, 2, 12, 15 );
              System.out.println ( "RELÓGIO DIGITAL EM JAVA" );
              ///////////////////////////////////////////////
              jht.poscolor ( 20, 4, 9, 15 );
              System.out.print ( "Hora atual => " );
              jht.textcolor ( 12 );
              Scanner hms = new Scanner ( System.in );
              str_1 = hms.nextLine ( );  
              if ( relogio ( str_1.charAt ( 0 ) ) == 0 ) {   
                   Toolkit.getDefaultToolkit ( ).beep ( );
                   //Apaga o caractere digitado
                   jht.Apaga ( 4, 5, 34, 40, 15 );
                   continue;
              }
              //Conversão de String para inteiro
              hora = Integer.parseInt ( str_1 );
              if ( acerta_hora ( ) ) {
                   Toolkit.getDefaultToolkit ( ).beep ( );
                   //Apaga o número inválido digitado
                   jht.Apaga ( 4, 5, 34, 40, 15 );
                   continue;
              }
              ///////////////////////////////////////////////
              jht.poscolor ( 20, 5, 9, 15 );
              System.out.print ( "Minutos => " );
              jht.textcolor ( 12 );
              str_2 = hms.nextLine ( );
              jht.textcolor ( 12 );
              if ( relogio ( str_2.charAt ( 0 ) ) == 0 ) {
                   Toolkit.getDefaultToolkit ( ).beep ( );
                   continue;
              }
              //Conversão de String para inteiro
              min = Integer.parseInt ( str_2 );
              if ( acerta_min ( ) ) {;
              Toolkit.getDefaultToolkit ( ).beep ( );
              continue;
              }
              ////////////////////////////////////////////////
              jht.poscolor ( 20, 6, 9, 15 );
              System.out.print ( "Segundos => " );
              jht.textcolor ( 12 );
              str_3 = hms.nextLine ( );
              jht.textcolor ( 12 );
              if ( relogio ( str_3.charAt ( 0 ) ) == 0 ) {   
                   Toolkit.getDefaultToolkit ( ).beep ( );
                   continue;
              }
              //Conversão de String para inteiro
              seg = Integer.parseInt ( str_3 );
              if ( acerta_seg ( ) ) {
                   Toolkit.getDefaultToolkit ( ).beep ( );
                   continue;
              }
              ///////////////////////////////////////////////
              hr = hora;
              mn = min;
              sg = seg;
              /*
              Este laço repetidor funciona como contador
              Vai incrementando até que atinge o número máximo
              em cada operação.
              */
              while ( true ) {
                   jht.Sleep ( 1000 );
                   sg++;
                   if ( sg > 59 ) {
                        sg = 0;
                        mn++;
                   }
                   if ( mn > 59 ) {
                        mn = 0;
                        hr++;
                   }
                   if ( hr > 23 ) {
                        hr = 0;
                   }
                   jht.cls ( );
                   jht.poscolor ( 20, 2, 12, 15 );
                   System.out.println ( "RELÓGIO DIGITAL EM JAVA" );
                   jht.poscolor ( 20, 4, 9, 15 );
                   System.out.print ( "Horas, minutos e segundos" );
                   jht.poscolor ( 20, 6, 9, 15 );
                   System.out.printf ( "H   M   S");
                   jht.poscolor ( 19, 8, 12, 15 );
                   System.out.printf ( " %d  %d  %d ", hr, mn, sg );
                   Inform ( );
              }
         }while ( true );
     /////////////////////////////////////////////////////////////////////////
     }

}

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.