Identificarte

Versión Completa : String a Int[] en java


Sponsored links
.




yagamipaul
octubre 20, 2006, 10:59
Buenas,

tengo el siguiente problema en java y no se como resolver, agradesco si pueden prestarme ayuda.

El problema es como transformar un String que contiene numeros (por ejemplo: "12354548") a un arreglo de enteros int [] ({1,2,3,5,4,5,4,8})


Gracias

Oesoto
octubre 21, 2006, 12:21
Usando substrings y haciendo Parse a Entero de esos substrings. Por cada lectura hay una entrada para el arreglo.

Aquí le dejo el código que acabo de hacer para resolver este problemita. Le adjunto por hay derecho el lector de teclado para que no tenga que estar recompilando cada vez que quiera cambiar los parametros del programa. Porque de vez en cuando es bueno hacer las tareas :p ;)

//by Oesoto - LANeros.com

public class Divisor {

/*
* Se declara un lector de teclado, un arreglo y el String a procesar
*/

lector reader;
int []array;
String texto;

//El constructor de la clase se encargará de obtener el String
public Divisor(){
reader = new lector();
System.out.print("Escriba el String con numeros que desea procesar: ");
this.texto = reader.leerString();
}

/*
* Se lee la longitud de la cadena y se crea un arreglo de ese tamaño
* Con un "for" se llena el arreglo con substrings
* Se llama el método imprimir para comprobar los contenidos del arreglo
*/
public void ProcesarCadena(){
int longitud = texto.length();
array = new int[longitud];
for (int i=0;i<longitud;i++){
array[i] = Integer.parseInt(texto.substring(i,i+1));
}
print(longitud);

}

//Recorre el arreglo e imprime elemento por elemento
public void print(int size) {
int j = 0;
System.out.println("\n" + "Contenido del arreglo:" + "\n");
while (j<size) {
System.out.println("Posicion " + (j) + ": " + array[j]);
j++;
}
}


public static void main(String args[]){
Divisor d = new Divisor();
d.ProcesarCadena();
}

}

La clase lectora de teclado es esta

//By Oesoto - LANeros.com
import java.io.*;
class lector{
public int leer (){
int valor=0;
String dato="";
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader teclado = new BufferedReader(isr);
try{
dato=teclado.readLine();
valor= new Integer (dato).intValue();
}catch (IOException ioe){}
catch(NumberFormatException e){System.out.print("Dato no válido");
}
return valor;
}


public String leerString(){
String dato="";
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader teclado = new BufferedReader(isr);
try{
dato=teclado.readLine();
}catch (IOException ioe){}
return dato;
}
}

Grissom.
octubre 21, 2006, 08:49
Con tunning:


String str;
int strLength = str.length();
char[] chars = new char[strLength];
int[] digits = new int[strLength];
str.getChars(0, strLength, chars, 0);

for (int index=0; index < strLength; index++) {
digits[index] = Character.digit(chars[index], 10);
}

(Ah no compila sorry)