¿Cómo convierto una cadena en un int en Java?

Resuelto Unknown user asked hace 13 años • 30 respuestas

¿ Cómo puedo convertir un Stringvalor a un inttipo?

"1234"1234
Unknown user avatar Apr 08 '11 01:04 Unknown user
Aceptado
String myString = "1234";
int foo = Integer.parseInt(myString);

Si observa la documentación de Java , notará que el "truco" es que esta función puede generar un archivo NumberFormatException, que puede manejar:

int foo;
try {
   foo = Integer.parseInt(myString);
}
catch (NumberFormatException e) {
   foo = 0;
}

(Este tratamiento establece de forma predeterminada un número con formato incorrecto 0, pero puedes hacer otra cosa si lo deseas).

Alternativamente, puedes usar un Intsmétodo de la biblioteca Guava, que en combinación con Java 8 Optional, crea una manera poderosa y concisa de convertir una cadena en un int:

import com.google.common.primitives.Ints;

int foo = Optional.ofNullable(myString)
 .map(Ints::tryParse)
 .orElse(0)
Rob Hruska avatar Apr 07 '2011 18:04 Rob Hruska

Por ejemplo, aquí hay dos formas:

Integer x = Integer.valueOf(str);
// or
int y = Integer.parseInt(str);

Hay una ligera diferencia entre estos métodos:

  • valueOfdevuelve una instancia nueva o en caché dejava.lang.Integer
  • parseIntdevuelve primitivo int.

Lo mismo es para todos los casos: Short.valueOf/ parseShort, Long.valueOf/ parseLong, etc.

lukastymo avatar Apr 07 '2011 18:04 lukastymo

Bueno, un punto muy importante a considerar es que el analizador de enteros arroja NumberFormatException como se indica en Javadoc .

int foo;
String StringThatCouldBeANumberOrNot = "26263Hello"; //will throw exception
String StringThatCouldBeANumberOrNot2 = "26263"; //will not throw exception
try {
      foo = Integer.parseInt(StringThatCouldBeANumberOrNot);
} catch (NumberFormatException e) {
      //Will Throw exception!
      //do something! anything to handle the exception.
}

try {
      foo = Integer.parseInt(StringThatCouldBeANumberOrNot2);
} catch (NumberFormatException e) {
      //No problem this time, but still it is good practice to care about exceptions.
      //Never trust user input :)
      //Do something! Anything to handle the exception.
}

Es importante manejar esta excepción cuando se intenta obtener valores enteros a partir de argumentos divididos o al analizar algo dinámicamente.

Ali Akdurak avatar Apr 30 '2013 06:04 Ali Akdurak

Hazlo manualmente:

    public static int strToInt(String str) {
        int i = 0;
        int num = 0;
        boolean isNeg = false;

        // Check for negative sign; if it's there, set the isNeg flag
        if (str.charAt(0) == '-') {
            isNeg = true;
            i = 1;
        }

        // Process each character of the string;
        while (i < str.length()) {
            num *= 10;
            num += str.charAt(i++) - '0'; // Minus the ASCII code of '0' to get the value of the charAt(i++).
        }

        if (isNeg)
            num = -num;

        return num;
    }
Billz avatar Sep 11 '2013 02:09 Billz