Monday, November 11, 2013

Treinamento Java 1 Básico - Capítulo 6


Página 59 e 60:

Exercício 1: Faça uma classe executável que dada uma string, informe:
a) Quantos espaços em branco existem
b) A quantidade de vogais que aparecem e qual o percentual em relação aos caracteres digitados.

  1. package visao;

  2. /*
  3.  * To change this template, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */

  6. /**
  7.  *
  8.  * @author Paulo Henrique Cayres
  9.  */

  10. import javax.swing.JOptionPane;
  11.         
  12. public class Exercicio01 {
  13.     
  14.     public static void main(String args[]){
  15.         
  16.         String frase = JOptionPane.showInputDialog("Digite uma frase: ");

  17.         int totEspacos=0;
  18.         int totVogais=0;
  19.         
  20.         for (int i=0; i < frase.length(); i++){
  21.             
  22.             if(Character.isSpaceChar(frase.charAt(i)))
  23.                 totEspacos++;
  24.             
  25.             if (Character.toUpperCase(frase.charAt(i)) == 'A'||
  26.                     Character.toUpperCase(frase.charAt(i)) == 'E'||
  27.                     Character.toUpperCase(frase.charAt(i)) == 'I'||
  28.                     Character.toUpperCase(frase.charAt(i)) == 'O'||
  29.                     Character.toUpperCase(frase.charAt(i)) == 'U'  )
  30.                 totVogais++;
  31.             
  32.         }
  33.         
  34.         System.out.println("Total de espaços em branco: "+totEspacos);
  35.         System.out.println("Total de vogais: "+totVogais);
  36.         System.out.println("Percentuais de vegais: "+ ((totVogais*100)/frase.length())+"%");
  37.         
  38.     }
  39.     
  40. }
OU
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package visao;

  6. import javax.swing.JOptionPane;

  7. /**
  8.  *
  9.  * @author Aluno
  10.  */
  11. public class Exercicio01_v2 {
  12.     
  13.     public static void main(String args[]){
  14.         
  15.         String frase = JOptionPane.showInputDialog("Digite uma frase: ").toUpperCase();

  16.         // expressão regular
  17.         // ^ - agrupador de exceção
  18.         int totEspacos = frase.replaceAll("[^ ]","").length(); 
  19.         int totVogais =frase.replaceAll("[^A]","").length(); 
  20.         totVogais += frase.replaceAll("[^E]","").length(); 
  21.         totVogais += frase.replaceAll("[^I]","").length(); 
  22.         totVogais += frase.replaceAll("[^O]","").length(); 
  23.         totVogais += frase.replaceAll("[^U]","").length(); 
  24.         
  25.         System.out.println("Total de espaços em branco: "+totEspacos);
  26.         System.out.println("Total de vogais: "+totVogais);
  27.         System.out.println("Percentuais de vegais: "+ ((totVogais*100)/frase.length())+"%");
  28.         
  29.     }       
  30. }





Exercício 2: faça uma classe executável que dada uma string, construa outra string substituindo a letra S por $, E por 3, A por 4, G por 6, B por 8, O por *, U por #.


  1. package visao;

  2. /*
  3.  2) Faça uma classe executável que dada uma string, construa outra string
  4.  substituindo a letra S por $, E por 3, A por 4, G por 6, B por 8, O por * e U por #.
  5. */

  6. /**
  7.  *
  8.  * @author Paulo Henrique Cayres
  9.  */
  10. public class Exercicio02 {

  11.     public static void main(String[] args) {

  12.         String x = "SEAGBEOUE";  

  13.        System.out.println( "Original: " + x ) ;
  14.        
  15.         x = x.replace("S","$");
  16.         x = x.replace("E","3");
  17.         x = x.replace("A","4");
  18.         x = x.replace("G","6");
  19.         x = x.replace("B","8");
  20.         x = x.replace("O","*");
  21.         x = x.replace("U","#");
  22.         
  23.         System.out.println( "Resultado: " + x ) ;
  24.     }

  25. }


Exercício 3: faça uma classe executável que verifique se uma cadeia de caracteres é um palíndromo. Uma cadeia de caracteres é um palíndromo se a inversão da ordem de seus caracteres resulta na mesma cadeia. Suponha que todas as letras da cadeia estejam em letras minúsculas. Exemplos: ovo, 1991, amor me ama em roma.
Atenção: Em alguns casos é necessário desconsiderar caracteres de pontuação, acentuação e espaço e, ainda, maiúscula de minúscula, para verificar se uma cadeia é um palíndromo. Exemplo:"Socorram-me, subi no ônibus em Marrocos".


  1. package visao;

  2. /*
  3.  * To change this template, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */

  6. /**
  7.  *
  8.  * @author Paulo Henrique Cayres
  9.  */

  10. import javax.swing.JOptionPane;

  11. public class Exercicio03 {
  12.     
  13.     public static void main(String args[]){
  14.         
  15.         String frase = JOptionPane.showInputDialog("Digite uma cadeia de caracteres: ");
  16.         String cadeia = "";
  17.         String palindrome = "";
  18.         
  19. //Repare que estamos percorrendo o vetor 

  20.         for(int i=0,j=frase.length()-1; i < frase.length(); i++,j--){
  21.             
  22.             if ( Character.isLetterOrDigit(frase.charAt(i)) )
  23.                 cadeia += frase.charAt(i);


  24.             if ( Character.isLetterOrDigit(frase.charAt(j)) )
  25.                 palindrome += frase.charAt(j);
  26.             
  27.         }

  28.         System.out.println(cadeia+" - "+palindrome);
  29.         
  30.         if(cadeia.equalsIgnoreCase(palindrome))
  31.             System.out.println(frase+" é palíndrome.");
  32.         else
  33.             System.out.println(frase+" não é palíndrome.");
  34.         
  35.     }  
  36. }

OU

  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package visao;

  6. import javax.swing.JOptionPane;

  7. /**
  8.  *
  9.  * @author Aluno
  10.  */
  11. public class Exercicio03_v2 {
  12.     
  13.     public static void main(String args[]){
  14.         
  15.         String frase = JOptionPane.showInputDialog("Digite uma cadeia de caracteres: ");

  16.         //expressão regular caracteres de pontuação...
  17.         frase = frase.replaceAll("[-.,;_ ]","");
  18.         
  19.         StringBuffer palindrome = new StringBuffer(frase);
  20.         
  21.         if(frase.equalsIgnoreCase(palindrome.reverse().toString()))
  22.             System.out.println(frase+" é palíndrome.");
  23.         else
  24.             System.out.println(frase+" não é palíndrome.");
  25.         
  26.     }  
  27.     
  28. }

Exercício 4: Faça uma classe executável que leia uma senha de no mínimo 6 caracteres e no máximo 12 caracteres, sendo que o primeiro caractere deve ser uma letra e deve conter pelo menos 2 números (em qualquer posição, exceto na primeira). Caso o usuário não forneça uma senha com estas especificações, mostrar a mensagem "senha não é válida" e solicitar que digite uma senha novamente (até ser válida).

  1. package visao;

  2. /*
  3.  * To change this template, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */

  6. /**
  7.  *
  8.  * @author Paulo Henrique Cayres
  9.  */

  10. import javax.swing.JOptionPane;

  11. public class Exercicio04 {

  12.     public static void main(String args[]){

  13.         boolean teste = true;
  14.         do{
  15.             String senha = JOptionPane.showInputDialog("Digite uma senha: ");

  16.             if (senha.length() >=6 && senha.length() <= 12){

  17.                 if(Character.isLetter(senha.charAt(0))){

  18.                     int totDigitos=0;
  19.                     for(int i=0; i < senha.length(); i++){
  20.                         if(Character.isDigit(senha.charAt(i)))
  21.                             totDigitos++;
  22.                     }
  23.                     
  24.                     if (totDigitos >= 2)
  25.                         teste = false;

  26.                 }
  27.                 else
  28.                     JOptionPane.showMessageDialog(null, "Senha não é valida. A senha não pode começar com número.","Mensagem",JOptionPane.WARNING_MESSAGE);            
  29.             }
  30.             else
  31.                 JOptionPane.showMessageDialog(null, "Senha não é valida.A senha de ter no mínimo 6 e no máximo 12 caracteres.","Mensagem",JOptionPane.WARNING_MESSAGE);
  32.             
  33.             
  34.         }while(teste);
  35.         
  36.         JOptionPane.showMessageDialog(null, "Senha valida.","Mensagem",JOptionPane.WARNING_MESSAGE);
  37.     }
  38.     
  39. }
Exercício 5: Faça uma classe executável que informe uma das mensagens a seguir, de acordo com a hora do sistema. -0h até 5:59h, "Boa madrugada" -6h até 11:59h, "Bom dia" - 12h até 17:59h, "Boa tarde" e das 18h até 23:59h, "Boa noite".

  1. package visao;

  2. /*
  3.  * To change this template, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */

  6. /**
  7.  *
  8.  * @author Paulo Henrique Cayres
  9.  */

  10. import java.util.Calendar;
  11. import java.util.Date;
  12. import javax.swing.JOptionPane;

  13. public class Exercicio05 {
  14.     
  15.     public static void main(String args[]){
  16.         
  17. Date agora = new Date();
  18.         Calendar calendario = Calendar.getInstance();
  19.         calendario.setTime( agora );

  20.         int hora = calendario.get(Calendar.HOUR_OF_DAY);
  21.         
  22.         if (hora < 6)
  23.             JOptionPane.showMessageDialog(null, "Boa Madrugada!", "Mensagem",JOptionPane.INFORMATION_MESSAGE);
  24.         else if (hora < 12)
  25.             JOptionPane.showMessageDialog(null, "Bom Dia!", "Mensagem",JOptionPane.INFORMATION_MESSAGE);
  26.         else if (hora < 18)
  27.             JOptionPane.showMessageDialog(null, "Boa Tarde!", "Mensagem",JOptionPane.INFORMATION_MESSAGE);
  28.         else
  29.             JOptionPane.showMessageDialog(null, "Boa Noite!", "Mensagem",JOptionPane.INFORMATION_MESSAGE);
  30.         
  31.     }
  32.     
  33. }
Exercício 6: Faça uma classe executável que dado a data de nascimento de uma pessoa (dia, mês e ano), informe quantos anos ela tem.

  1. package visao;


  2. import java.text.ParseException;
  3. import java.text.SimpleDateFormat;
  4. import java.util.Date;
  5. import java.util.GregorianCalendar;

  6. /*
  7.  * To change this template, choose Tools | Templates
  8.  * and open the template in the editor.
  9.  */

  10. /**
  11.  *
  12.  * @author Paulo Henrique Cayres
  13.  */

  14. import javax.swing.JOptionPane;

  15. public class Exercicio06 {
  16.  
  17.     public static void main(String args[]) throws ParseException{

  18.         SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");   
  19.         Date ini = sdf.parse("25/10/1972");   
  20.         Date fim = sdf.parse("26/06/2013");   

  21.         long dif = fim.getTime() - ini.getTime();   
  22.         int idade = (int) Math.floor((dif/86400000)/365.25);

  23.         JOptionPane.showMessageDialog(null, "Você tem "+idade+" ano(s).","Mensagem",JOptionPane.INFORMATION_MESSAGE);
  24.         
  25.     }
  26.     
  27. }
Exercício 7: Faça uma classe executável que dado a data de vencimento de uma fatura (dia, mês, ano) que já venceu (fatura em atraso) e seu valor, informe o número de dias em atraso, considerando a data atual para pagamento, e também o novo valor a pagar, considerando 0,5% de juros por dia de atraso.

  1. package visao;


  2. /*
  3.  * To change this template, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */

  6. /**
  7.  *
  8.  * @author Paulo Henrique Cayres
  9.  */

  10. import java.text.DateFormat;
  11. import java.text.DecimalFormat;
  12. import java.text.ParseException;
  13. import java.text.SimpleDateFormat;
  14. import java.util.Date;
  15. import java.util.GregorianCalendar;
  16. import javax.swing.JOptionPane;

  17. public class Exercicio07 {
  18.     
  19.     public static void main(String args[]) throws ParseException{

  20.         Date agora = new Date();
  21.         DateFormat df1 = DateFormat.getDateInstance(); // DD/MM/AAAA
  22.         
  23.         GregorianCalendar vencimento = new GregorianCalendar();   
  24.         GregorianCalendar atual = new GregorianCalendar();   
  25.         SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");   
  26.         vencimento.setTime(sdf.parse("04/02/2013"));
  27.         atual.setTime(sdf.parse(df1.format(agora)));   

  28.         long dt1 = vencimento.getTimeInMillis();   
  29.         long dt2 = atual.getTimeInMillis();   

  30.         int diasAtraso = (int) ((dt2-dt1)/86400000);
  31.         
  32.         double vlrFatura = 1220.13;
  33.         
  34.         double vlrAtraso = vlrFatura + ((vlrFatura * 0.005) * diasAtraso);
  35.         DecimalFormat df = new DecimalFormat();
  36.         df.applyPattern("R$ #,##0.00");

  37.         JOptionPane.showMessageDialog(null, "Fatura vencida a "+diasAtraso+" dia(s). Valor a pagar "+df.format(vlrAtraso),"Mensagem",JOptionPane.INFORMATION_MESSAGE);
  38.         
  39.         
  40.     }
  41.     
  42. }

Exercício 8: Para evitar erros de digitação de sequências de números de importância fundamental, como a matrícula de um aluno, o CPF, o número de conta bancária, etc., geralmente se adiciona ao número um dígito verificador. Por exemplo, o número de matrícula 811057 é usado como 8110573, onde 3 é o dígito verificador, calculado da seguinte maneira:
a) Cada algarismo do número é multiplicado por um peso começando de 2 e crescendo de 1, da direita para a esquerda: 8 x 7, 1 x 6, 1 x 5, 0 x 4, 5 x 3, 7 x 2
b) Somam-se as parcelas obtidas: 56 + 6 + 5 + 0 + 15 + 14 = 96
c) Calcula-se o resto da divisão desta soma por 11: 96 / 11 dá resto 8 (96 = 8 x 11 + 8)
d) Subtrai-se de 11 o resto obtido: 11 - 8 = 3
e) Se o valor encontrado for 10 ou 11, o dígito verificador será 0; nos outros casos, o dígito verificador é o próprio valor encontrado.
Faça uma classe executável que leia uma string representando o número seguido de seu respectivo dígito verificador e informe se o número está correto.

  1. package visao;


  2. import javax.swing.JOptionPane;

  3. /*
  4.  * To change this template, choose Tools | Templates
  5.  * and open the template in the editor.
  6.  */

  7. /**
  8.  *
  9.  * @author Paulo Henrique Cayres
  10.  */
  11. public class Exercicio08 {
  12.     
  13.     public static void main(String arg[]){
  14.         
  15.         String numero = JOptionPane.showInputDialog("Digite um número: ");
  16.         
  17.         int peso = 2;
  18.         int soma = 0;
  19.         
  20.         for(int i = (numero.length()-1); i>= 0; i-- ){

  21.             soma += peso * (Character.getNumericValue(numero.charAt(i)));

  22.             if (peso++ > 9)
  23.                 peso = 2;
  24.         }

  25.         System.out.println(soma);    
  26.         
  27.         int resto = soma % 11;
  28.         
  29.         int digito = 11 - resto;
  30.         
  31.         if (digito == 10 || digito == 11)
  32.                 digito = 0;
  33.         
  34.         numero += "-"+digito;
  35.         
  36.         JOptionPane.showMessageDialog(null, "Número com dígito verificador: "+numero,"Resultado",JOptionPane.INFORMATION_MESSAGE);
  37.     }
  38.     
  39. }
Fonte: livro do professor Paulo Henrique Cayres

No comments:

Post a Comment