Sugestões para ler uma String e colocar seus elementos em um array de int

5 respostas
F

Bom, o problema é o seguinte: eu tenho uma string, por exemplo:

String texto = "143567";

Eu tenho que ler essa string e cada número da string colocar em um índice no vetor de inteiros, exemplo:

int [] v1 = new int[texto.length()];

Agora vem a parte que eu não estou achando uma solução melhor:
Só existe uma dessa duas opções para fazer o que eu quero?

for (int i=0;i<texto.length();i++) { v1[i]=Integer.parseInt(String.valueOf(texto.charAt(i)),10); //Percorre a string só que o charAt é do tipo char então tenho que pegar o String.valueOf desse char e só depois fazer a conversão para inteiro. }
ou

for (int i=0;i<texto.length();i++) { v1[i]=Integer.parseInt(texto.length().substring(i,i+1),10); //Neste método, não precisa usar o String.valueOf porém percorro a string tirando substrings de tamanho 1 da string texto }

Bom, só consegui achar essas duas soluções porém achei um pouco complexo demais, não existe um método mais simples? Seria interessante saber as outras opções já que comecei com Java faz pouco tempo.
Obrigado

5 Respostas

lina

Oi,

Acredito que essa segunda opção não irá compilar… olha o código:

v1[i]=Integer.parseInt(texto.length().substring(i,i+1),10);

Existe como dar substring de um int? (texto.length().substring ???)

Em relação a sua primeira opção, não vejo um metodo melhor para fazer isso…
Até porque ela não é tão demorada…

Tchauzin!

aaa Bem vindo ao Guj!

Andre_Fonseca

Se você estiver usando java 5 vai funcionar assim:

String teste = "123456";
int tam = teste.length();
int[] vetor = new int[tam];
for (int i=0; i<tam; i++) {
	vetor[i] = Integer.parseInt(teste.substring(i, i+1));
}

for (int j=0; j><tam; j++) {
	System.out.println("vetor["+j+"]: "+vetor[j]);
}

>

maquiavelbona

Ninguém lembra do método toCharArray() ? Podes trabalhar cada fator sem substring() e assumindo que char é um tipo primitivo, pode trabalhar como número subtraindo 48 de cada char. Alguém faria um exemplo?
Caso não queira ficar subtraindo, podes trabalhar com Integer.parseInt() e String.valueOf().

Até!

L

Meio feia, mas funciona! :stuck_out_tongue:

String x = "12345";
		
		int[] v = new int[x.length()];
		for (int i = 0; i < x.length(); i++) {
			v[i] = x.charAt(i) - 48;
		}
F

Obrigado pelas respostas e por terem me recepcionado bem. Essa do 48 foi bem inteligente e prática, provavelmente o método menos custoso pra usar.
Valeu!

Criado 1 de maio de 2008
Ultima resposta 1 de mai. de 2008
Respostas 5
Participantes 5