Exercícios

  1. Escreva um trecho de programa que imprime se as letras maiúsculas são maiores ou menores, lexicograficamente, que as letras minúsculas.


String minusculas="abc";
String maiusculas="ABC";
if(minusculas.compareTo(maiusculas)<0)
  System.out.println("Minusculas precedem lexicograficamente maiusculas");
else
  System.out.println("Maiusculas precedem lexicograficamente minusculas");
 

  1. Escreva um trecho de programa que transforma um inteiro menor que 4000 e maior que zero em uma cadeia de caracteres correspondente a  um número romano.


  String[] u=
    {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX" };
  String[] d=
    {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC" };
  String[] c=
    {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM" };
  String[] m=
    {"", "M", "MM", "MMM"};
  String numRomano;
  int numArabico=1234;
  numRomano=m[numArabico/1000]   + c[numArabico%1000/100] +
            d[numArabico%100/10] + u[numArabico%10];
  System.out.println("o numero "+numArabico+" corresponde a "
                   + numRomano);

Escreva um trecho de programa que transforma um String em um arranjo de caracteres
  String s=...;
  char[] ac=new char[s.length()];
  for(int i=0; i<ac.length; i++) ac[i]=s.charAt(i);

  1. Escreva um trecho de programa que produz uma instância de string que seja o resultado da concatenação dos primeiros caracteres das palavras separadas por espaço em branco e que comecem com letra maíuscula. Exemplo: a instância "Universidade Federal de Minas Gerais"  deve resultar em "UFMG".


  String universidade="Universidade Federal de Minas Gerais";
  boolean achouEspaco=true;
  int comprimentoSigla=0;
  /* calcula o comprimento */
  for(int i=0; i<universidade.length(); i++){
    if(achouEspaco & Character.isUpperCase(universidade.charAt(i)))
      comprimentoSigla++;
    achouEspaco=Character.isSpaceChar(universidade.charAt(i));
  }
  /* aloca o vetor e coleta a sigla */
  char[] siglaChar=new char[comprimentoSigla];
  int j=0;
  achouEspaco=true;
  for(int i=0; i<universidade.length(); i++){
    if(achouEspaco & Character.isUpperCase(universidade.charAt(i)))
         siglaChar[j++]=universidade.charAt(i);
    achouEspaco=Character.isSpaceChar(universidade.charAt(i));
  }
  String sigla=new String(siglaChar);
  System.out.println("Sigla:"+sigla);

 

Observe o programa abaixo, compare com o trecho acima. O programa abaixo, em função de utilizar o comando “sigla=sigla+universidade.charAt(i)”, pode gerar mais lixo para ser coletado que o programa acima. Podem ser geradas as seguintes instâncias de String para o coletor de lixo: (1) “”, (2)”U”, (3)”UF”, (4)”UFM”; Neste caso específico, este aspecto pode ser ignorado em favor da simplicidade e legibilidade, mas não se deve esquecer que as instâncias  de String são imutáveis, ou seja uma vez criada a instância de String não se modifica.
class descobreSigla{

  public static void main(String[] arg){

    String universidade="Universidade Federal de Minas Gerais";

    boolean achouEspaco=true;

    int comprimentoSigla=0;

    String sigla="";

    for(int i=0; i<universidade.length(); i++){

      if(achouEspaco & Character.isUpperCase(universidade.charAt(i)))

        sigla=sigla+universidade.charAt(i);

      achouEspaco=Character.isSpaceChar(universidade.charAt(i));

    }

    System.out.println("Sigla:"+sigla);

 

  }

}