inversão de palavra(ajuda)

8 respostas
R

eu fiz aki só que ta bugando…se alguém poder me ajuda agradeço .

import java.util.*;

public class Inverter {

public static void main(String []args){

String str1;

int i;

char []PalavraInverte;

Scanner Entrada = new Scanner(System.in);

System.out.println(Por favor digitar alguma palavra);

str1 = Entrada.next();

PalavraInverte = new char[str1.length()];
for(i = 0; i < str1.length();i++ ){
		PalavraInverte[i]= str1.charAt(i); 
	}
	for(i = str1.length(); i > 0; i--){
		System.out.print( PalavraInverte[i] +  " ");
	}

}

}

flw

8 Respostas

M

Olá Rodrigo!

Bem, preste atenção no 2º loop. Em java, um Array tem o seu índice definido de 0 ao tamanho total menos 1. Ou melhor, se o tamanho dele é 3, o índice é de 0 á 2. Ou melhor, o correto seria:

for(i = str1.length()-1; i >= 0; i--){
System.out.print( PalavraInverte[i] + " ");
}

Você fez um código muito longo para algo simples. Olhe esse exemplo abaixo mais enxuto:

int i;
		
Scanner Entrada = new Scanner(System.in);
System.out.println("Por favor digitar alguma palavra");
String str1 = Entrada.next();

for(i = str1.length()-1; i >= 0; i--){
	System.out.print( str1.charAt(i) + " ");
}
berg.pb

Fala Rodrigo…

eu não me deti a procurar o problema… só percebi que o problema era no último FOR…
só que percebi duas coisas:

  1. não tinha pq vc converter em CHAR, a não ser que seja uma exigência do ‘cliente’. é melhor usar a função SUBSTRING do java, onde vc diz que quer pegar exatamente uma parte da String, e qual parte parte… (dá uma estudada sobre).
  2. não precisaria usar dois FOR.

Como, pelo título do topico, o que vc quer fazer é INVERTER a a palavra (tipo digita ‘XUXA’ e sai ‘AXUX’), segue abaixo o que eu adaptei de vc:

//não precisa importar tudo... importa só o que é necessário...
import java.util.Scanner;

public class Inverter {
   public static void main(String []args){
 //por padronização, se começam variáveis ou atibutos com letra minuscula.
		Scanner entrada = new Scanner(System.in);
		System.out.println("Por favor digitar alguma palavra: ");
		String str1 = entrada.next();

		String palavraInvertida = "";

		for(int i = str1.length(); i >= 0 ;i-- ){
		  if (i!=0)
//aqui é o pulo do gato... vc vai procurar pela substring, informando o início e o fim da parte onde está a substring.
			palavraInvertida += str1.toString().substring(i-1, i) + " ";
		  
		}
		System.out.println(palavraInvertida);


   }

}

Ah! Qdo vc for postar código nos posts, coloca entre as tads code

Abraços

R

puts, vlw msm pela ajuda e pela sugestão, eu tô aprendendo
como se usa vetor e me atrapalho as vezes.

flw

O

Dá pra inverter uma String com uma ou duas linhas de código usando o reverse() do StringBuilder.
Parece-me que tá a turma toda “pesquisando” no GUJ.
Estão postando vários exercícios que se resolvem com 2 ou 3 linhas de código. A não ser que o que se queira seja um programa sem ajuda avançada. Só usando primitivas, por exemplo.
Outra coisa, pesquisem antes de postarem dúvidas. Já está cheio de resposta pra esse problema.

DavidUser

espera ai! pra q serviu na parte:

palavraInvertida += str1.toString().substring(i-1, i) + " ";

o … .toString()

O

Exatamente pra o que você tá pensando…
Mas, distração acontece com qualquer um. :wink:

Lavieri

ozix:
Dá pra inverter uma String com uma ou duas linhas de código usando o reverse() do StringBuilder.
Parece-me que tá a turma toda “pesquisando” no GUJ.
Estão postando vários exercícios que se resolvem com 2 ou 3 linhas de código. A não ser que o que se queira seja um programa sem ajuda avançada. Só usando primitivas, por exemplo.
Outra coisa, pesquisem antes de postarem dúvidas. Já está cheio de resposta pra esse problema.

verdade ^^

public static void main(String[] args) { String normal = "inverte please"; String reverse = (new StringBuffer(normal)).reverse().toString(); System.out.println(reverse); }

resultado sai “esaelp etrevni”

O

http://java.sun.com/j2se/1.5.0/docs/api/java/lang/StringBuffer.html

Criado 7 de março de 2009
Ultima resposta 8 de mar. de 2009
Respostas 8
Participantes 6