Imprimir várias strings invertidas

4 respostas
Denise_sbs

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.

public void inverte (String s[], int qt){
        if (qt ==0)
            return;
        
        String resultado = new String();

        for (int i = 0; i < qt-1; i++){
            for (int j = s[i].length() -1; j >= 0; j--){
                resultado =  resultado + s.charAt(j);

            }
        }
        for (int i = 0; i < qt; i++){
            System.out.println (resultado);
    }
}

Se alguém puder dar uma força, ficarei grata.

4 Respostas

ViniGodoy

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 &lt; s.length; i++){ String resultado = &quot;&quot;; for (int j = s[i].length()-1; j &gt;= 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 &gt;= 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.

Grande abraço.

Criado 25 de agosto de 2011
Ultima resposta 26 de ago. de 2011
Respostas 4
Participantes 3