tengo duda sobre como puedo convertir una cadena a entero usando ciclos sin usar el clasico Integer.parseInt.
Algo como "1987" -> 1987
Gracias de antemano.
tengo duda sobre como puedo convertir una cadena a entero usando ciclos sin usar el clasico Integer.parseInt.
Algo como "1987" -> 1987
Gracias de antemano.
Te dejo aquí una posible solución:
Para poder convertir un String a entero vamos a crear una función que reciba un String, luego vamos a ir iterando en ese String y vamos a ir obteniendo cada número con el método chartAt()
, la cual obtiene el valor de un string de acuerdo a la posición que se le pase. El resultado de eso lo almacenamos en una variable de tipo entero y con eso ya lo tendríamos convertido.
public class StringtoInt {
public static void main (String args[])
{
String convertingString="1978";
System.out.println("String antes de parsear : "+ convertingString);
int output= stringToint( convertingString );
System.out.println("");
System.out.println("");
System.out.println("salida en int "+ output);
System.out.println("");
}
public static int stringToint( String str ){
int i = 0, number = 0;
boolean isNegative = false;
int len = str.length();
if( str.charAt(0) == '-' ){//compruebo si está el símbolo negativo
isNegative = true;
i = 1;
}
while( i < len ){
number *= 10;
//obtengo el número de la posición i+1
number += ( str.charAt(i++) - '0' );
}
//verificamos si es negativo y cambiamos
number = (isNegative)? -number: number;
return number;
}
}
En (isNegative)? -number: number;
usamos la sintaxis de operador ternarios para poder reducir un poco más el código, lo que va entre paréntesis es la condición lo que va después del signo ?
es el valor que tomará en caso la condición sea true
y lo que va después de los dos puntos es el valor que tomará en caso la condición sea false
.
También tienes el método Integer.valueOf("1978")
, quizá te sirve.