Boa noite Pessoal, tudo bem?
Eu estou realizando um exercício em Java e travei em uma parte. Gostaria da ajuda de vocês.
Eu tenho uma classe livro que contem os seguintes atributos
O Exercício proposto é que eu pegue a String Autor e formate ela para o padrão ABNT, por exemplo: Ex.: José de Alencar = ALENCAR, José de
Estou meio travado quanto a lógica que preciso aplicar para isto.
publicclassExemplo{publicstaticvoidmain(String[]args){Exemploprograma=newExemplo();programa.executar();}publicvoidexecutar(){System.out.println(formatoAbnt("José de Alencar"));System.out.println(formatoAbnt("André Luiz"));System.out.println(formatoAbnt("Ricardo Artur Staroski"));}privateStringformatoAbnt(StringnomeCompleto){String[]partes=nomeCompleto.split("\\s");intultimo=partes.length-1;Stringsobrenome=partes[ultimo];StringBuildernomeFormatado=newStringBuilder();nomeFormatado.append(sobrenome.toUpperCase());nomeFormatado.append(",");for(inti=0;i<ultimo;i++){nomeFormatado.append(" ");nomeFormatado.append(partes[i]);}returnnomeFormatado.toString();}}
Saída:
ALENCAR,JosédeLUIZ,AndréSTAROSKI,RicardoArtur
A
AndreLuiz99
Entendi, muito obrigado!
Ontem eu pesquisei bastante e até encontrei uma solução mas acabei não entendo ela muito bem, pois tinha só o código e eu ainda to bem no inicio do curso.
O código tinha essas instruções, porém não entendo muito bem a função do primeiro loop, você poderia me explicar ele? E também essa parte do código que você passou
“int ultimo = partes.length - 1;”
a parte do -1 me confunde, desculpe se talvez esse tipo de pergunta soe meio burra, mas realmente tenho essa dúvida.
S
Solucao aceita
staroski1 like
É um laço que começa na última letra do nome
autor.length()-1
e enquanto cada caractere encontrado for diferente de espaço em branco
autor.charAt(i)!=' '
vai vindo pra frente
i--
convertendo o caractere pra letra maiúscula
Character.toUpperCase(autor.charAt(i))
A variável partes é o nome completo com suas partes separadas pelo espaço em branco.
Por exemplo, uma String com meu nome "Ricardo Artur Staroski" se for quebrada em partes, vai gerar um array com 3 elementos: