Erro em código simples

Pessoal…qual é o erro nesse código?
o resultado tem que ser esse …
[b]Acho que o erro tá na linha14 tou a um tempinho sem fazer vetor e não lembro direito…

F
e
l
i
p
e

e
p
i
l
e
f

Ou seja o nome normale o nome de trás para frente…

String nome = "Felipe";
int tamanho = nome.length();
String [] vetor = new String[tamanho];
	
	for(char teste : nome.toCharArray()){
		
	System.out.println(teste);
	

	
	for(int a = tamanho - 1; a >= 0; a--){
		
 
		vetor[a] = vetor[teste];
		
	}
	
			
	}
	
	for(int imprimir = 0 ; imprimir < tamanho; imprimir++){
		
		System.out.println(vetor[imprimir]);
	}

Típico exemplo de programação “compilou, tá certo”. É óbvio que nem sempre quando um programa compila corretamente ele está certo.

Pense um pouquinho: o que você está querendo fazer nessa linha?

Outra dica. Pegue esse seu programa e rode-o em uma IDE (ou seja, vá “debugando” o programa, ou seja, vá acompanhando, passo a passo, os valores das variáveis. Pra começo de conversa, provavelmente você vai é acabar pegando um “ArrayIndexOutOfBoundsException” nessa tal linha, mas isso não vem ao caso. Qual é o valor da variável “teste” antes de chegar nessa linha? Qual o valor de “vetor[teste]” (isso se não provocar um ArrayIndexOutOfBounds"?

eu ja debuguei aqui… ta com o valor ‘F’
mas é assim mesmo que o vetor vai receber o valor do char?
passei um tempo estudando java OO e nunca mais fiz vetor…

ah! a IDE nao tá acusando erro na linha 14 . esse é só um palpite pq eu olhei o resto do código e creio eu que esteja certo

Só para você entender melhor, vou resolver o exercício para você. Rode o programa corrigido passo a passo, e vai entender que não precisa de um for dentro do outro.

 // O problema resolvido, sem ficar usando vetores à toa
 
 String nome = "Felipe";  
 int tamanho = nome.length();
 // Simples, não? Isto já imprimiria "epileF". 
 for (int i = tamanho - 1; i >= 0; --i) {
     System.out.println (nome.charAt (i));
}

// Agora usando um vetor de char (cuidado, char não é String. char é um tipo especial de inteiro,
// com 2 bytes, quase igual ao "short".)
// De quebra, vou ensinar você a usar um "for" que tem 2 variáveis - uma (j) que conta para trás, 
// como você já fez acima, e outra (i) que conta para frente. 
char[] vetor = new char[tamanho];
for (int i = 0, j = tamanho - 1; i < tamanho; i++, j--) {
    vetor [i] = nome.charAt (j);
}
// Imprimindo o array de caracteres...
for (int i = 0; i < tamanho; ++i) {
    System.out.println (vetor[i]);
}

// Sei, sei, você queria um array de strings mesmo. Então tá. Vamos fazer assim:
String[] vetorString = new String[tamanho];
for (int i = 0, j = tamanho - 1; i < tamanho; i++, j--) {
    vetorString [i] = nome.substring (j, j+1);
}
// Imprimindo o array de strings...
for (int i = 0; i < tamanho; ++i) {
    System.out.println (vetorString[i]);
}

valeu mesmo cara…
nem lembrava mais de CharAt hihi
o “substring” significa o que mesmo?

s.substring (a, b)

s é a string
a é a posição inicial (começa por 0)
b é a posição final, mais 1

Por exemplo, o que vai ser impresso pelas 2 linhas seguintes? (Dica: o nome de um campo marítimo de petróleo)

s = "ululante";
System.out.println (s.substring (1, 5));

valeu mesmo obrigado

Vocês complicam demais…

Para imprimir a String ao contrario, não precisa transformar ela em absolutamente nada, é só percorre-la ao contrário… Mas caso queira, depois, a String ao contrário no programa, usar o método reverse do StringBuilder ou StrngBuffer é melhor…

ex:

[code]//Apenas para imprimir:
String normal = “Felipe”;
for(int i = 0; i < normal.lenght(); i ++) //Imprime normal
System.out.println(normal.charAt(i));
for(int i = normal.lenght(); i > 0; i --) //Imprime ao contrário
System.out.println(normal.charAt(i));

//Ta, mas como eu faço para ter a String aqui no programa?
//R: método reverse
StringBuilder sb = new StringBuilder(normal);
String contrario = sb.reverse().toString();[/code]