Sei que vocês não gostam de corrigir códigos de "dever de casa", mas por favor, alguém pode me ajudar?
O usuário digita quantas palavras quiser, que serão armazenadas e manipuladas através de opções em um menu.
Consegui executar as várias opções de meu menu, só travei na hora de imprimir cada palavra invertida.
Corrigir os trabalhos, tudo bem, nós não gostamos é quando alguns folgados pedem para nós fazermos o trabalho. Sua dúvida é bem específica.
Seu problema é que vc está imprimindo apenas o último resultado. Para corrigir, basta imprimir o resultado dentro do for.
Além disso, é necessário zerar o resultado a cada iteração do laço.
public void inverte (String s[]){
for (int i = 0; i < s.length; i++){
String resultado = "";
for (int j = s[i].length()-1; j >= 0; j--){
resultado = resultado + s[i].charAt(j);
}
System.out.println (resultado);
}
}
Faltou chamar o charAt sobre s[i] e não somente s.
ViniGodoy
Para o exercício isso está ok. Na programação profissional de verdade, a performance da concatenação da String é péssima. O ideal nesses casos é usar um StringBuilder.
Além disso, seria melhor também usar o for each para percorrer a lista:
public void inverte (String s[]){
for (String str : s){
StringBuilder resultado = new StringBuilder();
for (int j = str.length()-1; j >= 0; j--){
resultado.append(str.charAt(j));
}
System.out.println (resultado.toString());
}
}
Ou, melhor ainda:
public void inverte (String s[]){
for (String str : s){
System.out.println(new StringBuilder(str).reverse().toString());
}
}
gpellizzoni
Seu professor quer que voce faca o algoritmo de inversao de strings ou eh permitido utilizar recursos do Java? Se for a segunda opcao, voce deve utilizar StringBuilder ao inves de String e chamar o metodo reverse().
Denise_sbs
Obrigada pela ajuda ViniGodoy! Vou corrigir.
E Gpellizzoni, o professor quer que usemos apenas o algoritmo, nada de métodos prontos.