Como transformar uma String num array de char?

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();
1 curtida

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 :grin:

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 :grin: :cool:

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: