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