Alguém ae sabe?
Tenho q pegar uma palavra q o usuário digitar pelo InputDialog e passar para um array de chars.
Tenho aki o toCharArray mas n to entendendo como usa, alguém pode me ajudar?
Valeu
Alguém ae sabe?
Tenho q pegar uma palavra q o usuário digitar pelo InputDialog e passar para um array de chars.
Tenho aki o toCharArray mas n to entendendo como usa, alguém pode me ajudar?
Valeu
use assim:
String suaString = "PortalJava.com";
char [] letras = suaString.toCharArray();
Cara, para percorrer seu Array de char use um for usando o tamanho do Array como condição(“Array.length”)!!
Falou!
[quote=“matheus”]use assim:
[code]
String suaString = “PortalJava.com”;
char [] letras = suaString.toCharArray();
[/code][/quote]
Mateus, não entendi o que seria esse “letras”, o nome do vetor?
To treinando recursiva pra inverter uma string, mas ta dando um erro q naum consigo achar, dê uma olhada:
import javax.swing.*;
public class Capitulo5 extends JApplet
{
char array[];
public void init()
{
String digitado =
JOptionPane.showInputDialog ( null, "Digite a palavra que deseja inverter" );
final int TAMANHO = digitado.length() - 1;
array = new char [ TAMANHO ];
for ( int x = 0; x < TAMANHO; x ++ )
array [ x ] = digitado.charAt ( x );
JOptionPane.showMessageDialog( null,
inverte ( array, TAMANHO ) );
}
public String inverte ( char array[], int size )
{
String invertido = "";
if ( array [ size ] <= 0 )
return invertido;
else {
invertido += array [ size ] ;
return inverte ( array, size - 1 );
}
}
}
Onde pode estar meu erro?
Edit:
ACHEI O ERRO!
huihaih, eu tava comparando o array [ size ] com 0 ao invés de comparar só o size :roll:
mas tb o eclipse n colabora né, ao invés de me avisar q são de tipos diferentes de dados me manda um IndexOutOfBound. por isso q fikei perdidão,huaihiahai.
Valeu pela força galera.
Bom, você achou o erro então?!
Seguinte:
Aqui você declara um valor qualquer a sua String
Declara um vetor char chamado letras
e aqui você está armazenando os valores contidos na sua String em um vetor, no caso especifico você está armazenando em letras[]
blz?!
Qualquer coisa posta ai!
Achei aquele erro mas agora está dando outro.
Parece q não está “acumulando” as letras da maneira como deveria, olha o código novo:
public class Capitulo5 extends JApplet
{
char array[];
public void init()
{
String digitado =
JOptionPane.showInputDialog ( null, "Digite a palavra que deseja inverter" );
char [] array = digitado.toCharArray();
inverte ( array, array.length - 1 );
JOptionPane.showMessageDialog ( null,
inverte ( array, array.length - 1 ) );
}
public String inverte ( char array[], int size )
{
String invertido = " ";
invertido += array [ size ] + " ";
if ( size <= 0 )
return invertido;
else
return inverte ( array, size - 1 );
}
}
Quando mostra o resultado, só aparece a primeira letra q eu digitei ( q ficaria como última letra da palavra invertida )
achei estranho pq eu colokei invertido += mas não está acumulando o valor anterior, alguém sabe o q pode ser?
[code]import javax.swing.*;
public class Capitulo5 extends JApplet
{
char array[];
void init(String args[])
{
String digitado =
JOptionPane.showInputDialog ( null, "Digite a palavra que deseja inverter" );
char [] array = digitado.toCharArray();
inverte ( array, array.length - 1 );
JOptionPane.showMessageDialog ( null,
inverte ( array, array.length - 1 ) );
}
public String inverte ( char array[], int size )
{
String invertido = “”;
for(int i = 0; i<array.length ; i++)
{
invertido += array [i] + " ";
}
if ( size <= 0 )
return invertido;
else
return inverte ( array, size - 1 );
}
} [/code]
Cara, pode testar o codigo que agora ta funcionando…
Na verdade você precisa de um vetor pra passar por todas as posições do char, da maneira como estava fazendo estava pegando somente a primeira letra mesmo…
blz?!
Falou!
Então dumestico,
2 coisas
1 - O objetivo da recursiva eh não usar nenhum laço de repetição, fazer com q ele mesma se chame para não ter q usar nenhuma repetição .
2 - seu for vai mostrar a palavra exatamente como ela é,
deveria ser assim
for ( int x = array.length - 1; x >= 0; x-- )
//blah bllah blah.
Ai sim fica certo, mas eu soh estaria jogando a interação dentro de uma recursão.
Alguém sabe se tem alguma maneira de resolver isso sem usar NENHUM laço de repetição?
Valeu
AGORA EH DEFINITIVO, ACHEI A SOLUÇÃO!
ahuihiuaiha
O erro estava no seguinte:
Declarar o valor da variável invertido como “” no começo do método q eh chamado, com isso, toda vez q o método eh chamado o valor dela passa a ser “”
Como resolvi: ao invés de usar uma variável dentro do método, usei-a como ARGUMENTO do método, assim eu poderia mudar seu valor toda vez q o método fosse chamado
Declarei essa variável dentro de init()
Código funcionando abaixo
import javax.swing.*;
public class Capitulo5 extends JApplet
{
char array[];
public void init()
{
String palavrainv = "";
String digitado =
JOptionPane.showInputDialog ( null, "Digite a palavra que deseja inverter" );
char [] array = digitado.toCharArray();
JOptionPane.showMessageDialog ( null,
inverte ( array, array.length - 1, palavrainv ) );
}
public String inverte ( char array[], int size, String result )
{
result += array [ size ] + " ";
if ( size <= 0 )
return result;
else
return inverte ( array, size - 1, result );
}
}
[]'s ae pra todos que me ajudaram
Pra inverter uma String, pode usar o método (acho que é esse o nome) revert(), de StringBuffer.
StringBuffer sb = new StringBuffer("teste");
String invertida = sb.revert();
Bom, não lembro o tipo de retorno do revert. Se for StringBuffer, use o toString().
a gente se matando e tem um metodo que faz isso…rs…
, mas foi da hora…rs…
[quote=“dumestico”]a gente se matando e tem um metodo que faz isso…rs…
, mas foi da hora…rs…[/quote]
Se não quebrar a cabeça q graça tem? :lol: