2012-03-07 17 views
8

¿Hay alguna forma de convertir un nulo en entero? El nulo es en realidad una Cadena, que estoy pasando en mi capa de servicio que lo acepta como un Entero. Entonces, cada vez que trato de convertir una Cadena nula a Entero, me lanza una excepción. Pero tengo que convertir el nulo en Entero.Emitir una cadena nula en un entero

Gracias

+1

está usando 'Integer.parseInt() 'o simplemente lanzar? – Jon

+4

¿Puede proporcionar un ejemplo simple en el código?'null' habita en Java en todos los tipos, por lo que una" Cadena "' null' debe ser convertida a un "Entero" 'nulo' sin problema. – oconnor0

+0

¿Puede mostrarnos las líneas de código que está utilizando? – aldrin

Respuesta

20

Usted no puede elenco de String a Integer. Sin embargo, si usted está tratando de convertir cadena en número entero y si usted tiene que proporcionar una implementación para el manejo de null Cuerdas, echar un vistazo a este fragmento de código:

String str = "..."; 
// suppose str becomes null after some operation(s). 
int number = 0; 
try 
{ 
    if(str != null) 
     number = Integer.parseInt(str); 
} 
catch (NumberFormatException e) 
{ 
    number = 0; 
} 
+2

Capturar 'Excepción' no suele ser una gran idea; es mejor atrapar 'NumberFormatException' y' NullPointerException' individualmente. –

+1

@CraigRinger ¡tienes razón! Cambié mi código en consecuencia. gracias por el comentario útil :) – Juvanis

5
String s= ""; 
int i=0; 
i=Integer.parseInt(s+0); 
System.out.println(i); 

Prueba este

+0

¡Esto es brillante! – tsig

+0

esto debería ser 'int.Parse (0 + s);' no al revés. Funcionará independientemente cuando 's' es una cadena vacía, pero si' s' es decir ... 11 obtendrá 110 con el enfoque actual. – cogumel0

2

¿Y esto?

private static void castTest() { 
    System.out.println(getInteger(null)); 
    System.out.println(getInteger("003")); 
    int a = getInteger("55"); 
    System.out.println(a); 
} 

private static Integer getInteger(String str) { 
    if (str == null) { 
     return new Integer(0); 
    } else { 
     return Integer.parseInt(str); 
    } 
} 
3

No puede transmitir de String a Entero.
Los tipos de datos de Java son de dos tipos: primitiva y referencia. Los tipos primitivos son: byte, corto, int, largo, char, flotante, doble. Los tipos de referencia son: clase, interfaz, matriz.
byte -> corto -> int -> largo -> flotante -> doble. es permitir, O La conversión puede ser de su propio tipo o a uno de sus tipos o interfaces de subclase o superclase.
Así que este es un ex. de la función de echar un vistazo

public int getInteger(String no) { 
    if (no != null) { 
     return Integer.parseInt(no); //convert your string into integer 
    } else { 
     return 0; // or what you want to return if string is Null 
    } 
} 
-1

Si está seguro de que sólo se tiene que manejar los nulos,

int i=0; 
i=(str==null?i:Integer.parseInt(str)); 
System.out.println(i); 

de cadenas no enteros se tirará Numberformat excepción

7

Si está utilizando Apache commons, hay un método de ayuda que hace el truco:

NumberUtils.createInteger(myString)

Como se ha dicho en el documentation:

"convertir un String a un Integer, manipulación hexagonales y octales notaciones; devuelve null si la cadena es null; arroja NumberFormatException si el valor no se puede convertir.

+1

¿Esto funcionó para usted? Lo probé en una Cadena nula y arrojó una NullPointerException ... –

+0

Me funcionó. ¿Estás seguro de que NumberUtils proviene de Apache commons y no de otra biblioteca? –

+0

Pero debe tener en cuenta que el método no llama 'Integer # parseInt()/valueOf()' sino 'Integer # decode()' en su lugar! – d56

0

Try a continuación code:application regresará 0 si la cadena es nula de lo contrario se analizar la cadena de int si la cadena contiene un número solo ..

Código:

(str.equals("null")?0:Integer.parseInt(str)) 
Cuestiones relacionadas