problemas criando letra maiusculas

problemas criando letra maiusculas

por Vinícius Morelli Côrtes -
Número de respostas: 8
Oi!
Eu e o Eric estamos tendo problemas para fazer a primeira letra dos versos impares ficarem maiusculas. Alguma sugestão?
Em resposta à Vinícius Morelli Côrtes

Re: problemas criando letra maiusculas

por Marcelo Queiroz -
Olá, Vinícius!

Além do método toUpperCase, visto em sala de aula (que funciona para qualquer String, porém converte TODOS os caracteres para maiúsculas), pode te ajudar
o método substring. Dê uma olhada em

http://java.sun.com/javase/6/docs/api/

selecione a classe String no menu que fica embaixo à esquerda e olhe na tabela com os métodos.


Em resposta à Marcelo Queiroz

Re: problemas criando letra maiusculas

por Danila Ribeiro -

Esse método substring sugerido não aparece no livro, certo?

Como poderia usar o toUpperCase para converter apenas a primeira letra?

Em resposta à Danila Ribeiro

Re: problemas criando letra maiusculas

por Marcelo Queiroz -
Olá, Danila!

Se você quiser fazer o EP usando apenas os métodos do livro, não se preocupe que dá pra fazer tudo. O que estamos colocando a mais como dicas no fórum é de uso estritamente opcional. De fato a classe String possui vários métodos que ajudam a gente a escrever códigos mais concisos e não se preocupar com coisas tediosas (embora importantes!), como construir Strings letra-por-letra.

Sobre sua 2a pergunta, se s="abacaxi", então s.toUpperCase().charAt(0) é o caractere 'A'. A partir dele você pode construir a string "Abacaxi" somando (isto é, concatenando) os demais caracteres, um de cada vez:

String t=""; // inicializa String vazia
t = t+s.toUpperCase().charAt(0); // adiciona primeira letra em maiúscula
for (i=1;i<s.length();i=i+1) // adiciona as demais letras
t = t+s.charAt(i);



Em resposta à Marcelo Queiroz

Re: problemas criando letra maiusculas

por Danila Ribeiro -

Eu realmente sinto mais segurança em usar os métodos do livro. Puxa, fiquei contente com a resposta pois conseguir fazer parecido apenas consultando o livro, porém não tinha usado esse for. Eu tentei fazer uma string receber a soma de duas chars; para mim, isso tinha lógica, mas não compilou. Gostaria que o professor comentasse. Obrigada!

Em resposta à Danila Ribeiro

Re: problemas criando letra maiusculas

por Marcelo Queiroz -
Legal, Danila!

O que te impediu de atribuir a soma de dois char's a uma String é um detalhe que realmente não foi abordado no curso, e tem a ver com como o operador '+' é interpretado. Vimos que o '+' é usado para somar int's, double's, Strings e etc., mas é interessante se perguntar como a linguagem sabe que aqui trata-se de uma soma no sentido matemático, alí uma concatenação de seqüências de caracteres, etc?

Isso tem a ver com o contexto onde o operador aparece. Se a soma envolve int's e/ou double's, é soma aritmética; se são Strings, ou ainda um String e um char, é concatenação. E se são dois char's? A linguagem considera que sua intenção neste caso é somar os códigos numéricos (ASCII ou parecido) que representam estes caracteres (eu sei, você não sabia, nem tem culpa disso...). Isso é útil para fazer certas manipulações, como por exemplo converter uma letra para maiúscula! O método toUpperCase não faz a conversão de cada caractere através de alguma construção medonha parecida com se (c=='a') então 'A' senão se (c=='b') ... mas sim através de uma conta bem simples como:

c_maiusculo = (char)(c+'A'-'a');

a expressão c+'A'-'a' soma à posição do caractere armazenado em c a diferença entre o valor da posição do caractere 'A' e do caractere 'a'; sabendo que as letras minúsculas e maiúsculas estão armazenadas na seqüência "natural" 'a','b','c'... e 'A','B','C',... isso fornece a posição da versão maiúscula do caratere armazenado em c. Só que o resultado é um número. Para mudar de volta pra char tem que usar este operador (char) que é uma conversão explícita entre tipos (neste caso de int para char). Você também pode somar números a char's e obter números: por exemplo, 'f'+5 é a posição (na tabela de caracteres) que fica 5 casas à frente da posição ocupada por 'f'. A expressão (char)('f'+5) é o caractere que fica 5 casas depois de 'f', ou seja, 'k'.

Vá na janela de interactions do DrJava e digite a seqüência:

char c='f'
c+1
c+5
(char)(c+1)
(char)(c+5)

for (c='z'; c>='a'; c=(char)(c-1))
System.out.println(c);

Talvez o exemplo torne o blá-blá-blá mais claro! sorriso

Bom final de semana!

Marcelo


Em resposta à Marcelo Queiroz

Re: problemas criando letra maiusculas

por Danila Ribeiro -
Acho que essas poucas (!) linhas de expressão esclareceram bem o que acontece e pela clareza poderiam, ao meu ver, serem incorporadas ao texto do livro. Obrigada!