Jump to content

Inverter string em java


FireBlade

Recommended Posts

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

Link to post
Share on other sites

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:

Link to post
Share on other sites

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

Link to post
Share on other sites

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;)

Link to post
Share on other sites

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;)

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.