RESOLVIDO - metodos charAt() . lenght() e Split() (além de outros) da classe String

Bom pessoal a apostila da caelum pede pra escrever um método que usa os métodos charAt e length de uma String para imprimir a mesma
caractere a caractere, com cada caractere em uma linha diferente.
bom isso consegui

String string = "abc";
for (int i = 0; i < string.length(); i++){
				System.out.println(string.charAt(i));
			}

mas nao consegui implementar um metodo de tal forma que escreva a string ao contrario caractere por caractere
alguma dica ai ?

StringBuilder e StringBuffer possui o metodo reverse.

Se for seguir a mesma logica, vc pode fazer “i” ir do tamanho da string ate chegar a 0

String string = "abc"; for (int i = string.length()-1; i >= 0; i--){ System.out.println(string.charAt(i)); }

[quote=robsonsm]Se for seguir a mesma logica, vc pode fazer “i” ir do tamanho da string ate chegar a 0

String string = "abc"; for (int i = string.length()-1; i >= 0; i--){ System.out.println(string.charAt(i)); } [/quote]

thanks men
agora vou testar os metodos q vc falou

cara nao to consguindo criar um objeto StringBuffer pra chamar o metodo reverse. nao conseguindo escrever a sintaxe direito.
pode me ajudar?

StringBuffer sb = new StringBuffer("abc"); System.out.println(sb.reverse().toString());

[quote=robsonsm]StringBuffer sb = new StringBuffer("abc"); System.out.println(sb.reverse().toString());[/quote]

pq q tem que chamar toString tb Robson?

não é necessário, pode retirar.

rafaelczy , com certeza utilizar o método reverse() ou qualquer outra coisa ja pronta vai funcionar e ser bem mais fácil,

mas como você está acompanhando uma apostila da Caelum o idela é que você quebre a cabeça mesmo pra tentar desenvolver o exercício, de qualquer maneira que conseguir, depois vai refatorando a medida que adquire conhecimento e prática.

Claro, só uma sugestão minha.

Abraço!

Não tinha pensado nisso Wellingtom. nem pensei q isso era possivel. bela dica.
obrigado a vc tb Digao !

Pessoal a apostila da caelum pede pra escrever uma frase mas com as palavras em ordem invertida usando o metodo Split() da classe String

String palavra = "abc def";
System.out.println(palavra.split(palavra));

Mas o codigo acima esta errado. Onde estou errando ?
O resultado abaixo não é o que eu esperava, acho q isso deve ser o numero dessa variavel na memoria

[Ljava.lang.String;@16f0472

[quote=rafaelczy]Pessoal a apostila da caelum pede pra escrever uma frase mas com as palavras em ordem invertida usando o metodo Split() da classe String

String palavra = "abc def";
System.out.println(palavra.split(palavra));

Mas o codigo acima esta errado. Onde estou errando ?
O resultado abaixo não é o que eu esperava, acho q isso deve ser o numero dessa variavel na memoria

[Ljava.lang.String;@16f0472[/quote]

Mas é lógico, você passou sua String em um método que vai aplicar uma Regex.
Se queres os espaços dela, pode usar:

palavra.split(" ")

Acho que isso aqui também funciona:

palavra.split("[ ]+")

[quote=nel][quote=rafaelczy]Pessoal a apostila da caelum pede pra escrever uma frase mas com as palavras em ordem invertida usando o metodo Split() da classe String

String palavra = "abc def";
System.out.println(palavra.split(palavra));

Mas o codigo acima esta errado. Onde estou errando ?
O resultado abaixo não é o que eu esperava, acho q isso deve ser o numero dessa variavel na memoria

[Ljava.lang.String;@16f0472[/quote]

Mas é lógico, você passou sua String em um método que vai aplicar uma Regex.
Se queres os espaços dela, pode usar:

palavra.split(" ")

Acho que isso aqui também funciona:

palavra.split("[ ]+")

tentei assim como vc disse

String palavra = "abc def";
System.out.println(palavra.split(" "));

mas continua dando: [Ljava.lang.String;@ad3ba4
e nao inverteu a ordem da palavra na string que dei
alguma outr dica ai ?

Sim, claro, rafaelczy!

o método split() serve para quebrar a string e retornar um array.

Para imprimir você tem charmar os indices do array.

tente fazer.

[code]String palavra = “abc def ghi”;
String[] palavras = palavra.split(" ");

for(int i = 0; i < palavras.length; i++)
System.out.println(palavras[i]);[/code]

Abraço!

[quote=Vingdel]Sim, claro, rafaelczy!

o método split() serve para quebrar a string e retornar um array.

Para imprimir você tem charmar os indices do array.

tente fazer.

[code]String palavra = “abc def ghi”;
String[] palavras = palavra.split(" ");

for(int i = 0; i < palavras.length; i++)
System.out.println(palavras[i]);[/code]

Abraço![/quote]

Ai amigo…implemntei seu codigo mas da ArrayIndexOutOfBoundsException
to tentando arrumar mas ainda nao consegui

Desculpa Vingdel mas me confundi aqui.
seu exemplo nao ta lançcando erro de exceçao como postei acima
mas tambem nao esta imprimindo a string palavra com as palvras que a constituem em ordem invertida como pede a apostila
mais alguma dica ai ?

puxa que confusao
desculpa vingdel
sao os meus codigos que nao estao escrevendo nada no retorno e n ao o seu
o seu ta certo mas em parte pq imprime
abc
def
ghi

e o que a apostila pede é que seja impresso assim
ghi
def
abc

to tentando aqui mas aceitos sua ajuda de novo

rafael_czy, eu apenas te mostrei como o método split() funciona.

Você já aprendeu como inverter as palavras, amigão.

Cabe a você juntar as informações, e usa-las de forma combinda para chegar ao resultado desejado.

Não adianta trazermos os brinquedos e brincarmos na sua frente. Você não vai se divertir. Os brinquedos estão aí pra você brincar. Entendeu?

Abraço!

String palavra = "abc def ghi";  	    
String[] palavras = palavra.split(" ");

for (int i = palavra.length()-1; i==0; i-- ){  
	        System.out.println(palavras[i]);
}

tentei assim mas nao imprime nada

e assim

for (int i = palavra.length()-1; i>=0; i-- ){  
	        System.out.println(palavras[i]);
}

da IndexOutOfBoundException

ufsss…

ok
bom entao so me resta me esforçar mais
vou tentar
obrigado VingDel