Jump to content
FireBlade

Inverter string em java

Recommended Posts

FireBlade

Boa noite ppl,

É o seguinte fiz este troço de código com o objectivo do utilizador fornecer uma frase e essa frase aparecer invertida, até aqui tudo bem está tudo feito testado e a 'funcionar'.

O resultado que aparece é este (para a frase bom dia): aid maid maid maid maid maid maid m      :wallbash:

Já mudei os for's já fiz mil e uma coisa e nada =/

O código é este:

import java.util.*;

public class stringMess {

  public static String invertePal(String s){

    String resultado = (" ");

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

{

for(int j = s.length()-1 ; j>1;j-- )

{

resultado = resultado + s.charAt(j);

}

}

return (resultado);

  }

 

 

  public static void main (String [] args) {

    Scanner teclado = new Scanner(System.in);

System.out.print("Introduza uma frase:");

String s = teclado.nextLine();

System.out.println(" " + invertePal(s));

}

}

Se alguem me poder ajudar agradecia

Share this post


Link to post
Share on other sites
FireBlade

Obrigado pela resposta brunoais,

mas eu ainda não dei isso nas aulas por isso 'não posso' meter uma coisa que ainda não aprendi  :D

O problema deverá estar no 2º for, que é quando ele lê a string ao contrário, mas eu já mudei tanta coisa que até já nem sei para aonde me virar.  :wallbash:

Share this post


Link to post
Share on other sites
alexd16

Tu só precisas do segundo ciclo, o 1º ciclo esta a mais

for(int j = s.length()-1 ; j>1;j-- )

{

resultado = resultado + s.charAt(j);

}

isto penso que já faz o que pretendes.

cumps;)

Share this post


Link to post
Share on other sites
TP

pois tens razao alexd16, ja nao aparece muitos bom dias's invertidos, mas agora da outro erro:

aparece so aid m faltam as 2 letras ob :S

Share this post


Link to post
Share on other sites
alexd16

np;)

Já agora, em vez de >-1 talvez fosse melhor pores >= 0 acho que a condição fica a perceber-se melhor.

Só uma sugestão.

cumps;)

Share this post


Link to post
Share on other sites
TP

Obrigada, vou meter :D

mesmo assim esta a dar um pequeno problema, por exemplo eu quero que ele inverta a palavra JOSE ANTONIO MARQUES e o resultado devia dar assim: ESOJ OINOTNA SEUQRAM

mas no meu da ao contrario: SEUQRAM OINOTNA ESOJ

o que posso fazer para me mostrar o resultado ao contrario?? :S

Share this post


Link to post
Share on other sites
alexd16

Ah espera, eu pensei que apenas querias inverter a string. Nesse caso tu queres inverter cada palavra de uma string mantendo a ordem delas é isso?

Tu sabes usar o metodo split das strings?

Share this post


Link to post
Share on other sites
TP

yap é isso mesmo que eu quero, mas nao ainda nao sei usar o metodo split :S ainda estou no inicio a aprender...

Share this post


Link to post
Share on other sites
alexd16

Bem, então deixa la ver se te consigo ajudar. Continuas a só precisar desse ciclo, mas vais ter que fazer mais qualquer coisa.

A ideia é ires acumulando a palavra invertida ate encontrares um espaço, como fazer isso?

      ....
      char c = word.charAt(i);
      if(c!=' '){
   aux= c+aux; 
      }
      else{    
          // colocar aux no resultado;
          // inicializar aux;
      }

se fizeres isto enquanto não encontrares um espaço a variável aux vai ficar com a palavra invertida

depois no else o que tens de fazer é concatenar normalmente à variável de retorno e reinicializar o aux com ""

Talvez seja um pouco difícil de perceberes, mas vai tentado e pensar numa maneira simples de o fazer

cumps;)

Share this post


Link to post
Share on other sites
TP

obrigada, vou tentar fazer e ja digo se esta a funcionar ou nao :D diz.me so uma coisa meto isto aonde? no final do codigo?

Share this post


Link to post
Share on other sites
alexd16

Isto é dentro do ciclo, repara que tas a ir buscar qualquer coisa dentro da string com o index do ciclo.

Mas pensa no que estas a fazer, não tentes colar o código e esperar que funcione porque isto de programar é preciso mesmo ir pensando um bocado senão não bate nada como nos queremos. Se te ajudar ate podes fazer bonecos no papel para pensares no algoritmo. Muitos vezes e a parte mais importante. Pensa no que queres e nas dicas que eu dei.

Se mesmo assim não conseguires diz que eu tento ajudar outra vez.

cumps;)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.