2010-09-29 912 views
14

Realmente no sé si esto es posible o no. Pero estoy trabajando en un lugar donde quiero comprobar un valor int es null o no, para llamar a diferentes métodos.¿Cómo comprobar si un int no es nulo o está vacío?

¿Hay alguna manera de hacerlo?

En realidad, la variable proviene de un navegador con un valor de null. No puedo cambiar la declaración int al Integer. Porque tiene sus propias consecuencias.

¿Alguna sugerencia?

+0

“esa variable proviene de un navegador con un valor nulo” - ¿Qué quiere decir con eso? como lo señaló Bozho, esto es claramente imposible. –

+0

@Konrad Rudolph: Usted votó por esto: "esa variable proviene de un navegador con valor nulo". Resolví mi problema con la ayuda de la respuesta de Bozho "entonces es el convertidor el que decide si establecer 0" Sí, Int no puede ser nulo y es imposible. Pero un convertidor puede cambiar el valor nulo en '0' para asignarlo a una variable int. Ahora dime por qué votaste abajo. ¿Cuál es el problema con mi pregunta? Estoy claro que comienza con "Realmente no sé si esto es posible o no". ¡¡¡Qué significa eso!!! Realmente no sé b4 tht ... Creo que dos veces b4 abajo votando –

+0

No perdonó. Su pregunta puede haber sido válida (no puedo decirlo, pero no rechazo cuando no puedo) - Solo estaba pidiendo aclaraciones. –

Respuesta

31

int variables no pueden ser null

Si un null es que ser convertido a int, entonces es el convertidor que decide si establece 0, excepción de banda, o conjunto otro valor (como Integer.MIN_VALUE). Intenta conectar tu propio convertidor.

0

Posiblemente el buscador devuelve la representación en cadena de algún valor entero? En realidad, int no puede ser nulo. Puede ser que se pueda verificar nulo, si el valor no es nulo, luego se transforma la representación de cadena a int.

1

si su variable int se declara como una variable de nivel de clase (variable de instancia) sería predeterminada a 0. Pero eso no indica si el valor enviado desde el cliente era 0 o nulo. puede ser que tenga un método setter que podría llamarse para inicializar/establecer el valor enviado por el cliente. entonces usted puede definir su valor del indicador, puede ser un cierto valor negativo para indicar el nulo.

2

Creo que está preguntando por un código como este.

int count = (request.getParameter("counter") == null) ? 0 : Integer.parseInt(request.getParameter("counter")); 
-3

Un número entero no puede ser nulo, pero hay una manera muy simple de hacer lo que quiere hacer. Use una instrucción if-then en la que verifique el valor del entero contra todos los valores posibles.

Ejemplo:

int x; 

//Some Code... 

if (x<=0 || x>0){ 
    //what you want the code to do if x has a value 
} else { 
    //what you want the code to do if x has no value 
} 

responsabilidad: Estoy asumiendo que Java no configura automáticamente los valores de los números a 0 si no ve un valor.

+1

Los campos tienen un valor predeterminado de 0; las variables locales ** deben ** tener asignado un valor o el código no se compilará. Esa condición siempre será cierta para cualquier código válido. – kiheru

+0

Realmente funcionó para mí. –

3

Creo que puede inicializar las variables un valor como -1, porque si las variables de tipo int no se inicializan, no se pueden utilizar. Cuando desee verificar si no es el valor que desea, puede verificar si es -1.

0

int no puede ser nulo. Si no está asignando ningún valor al valor predeterminado de int, será 0. Si desea comprobar nulo, haga int como entero en la declaración. Entonces el objeto Integer puede ser nulo. Entonces, puedes verificar dónde es nulo o no. Incluso en la validación javax bean, no podrá obtener el error para la anotación @NotNull hasta que la variable se declare como Integer.

+0

Esto es realmente un comentario, no una respuesta. Con un poco más de repetición, [podrá publicar comentarios] (// stackoverflow.com/privileges/comment). – manetsus

1
public class Demo { 
    private static int i; 
    private static Integer j; 
    private static int k = -1; 

    public static void main(String[] args) { 
     System.out.println(i+" "+j+" "+k); 
    } 
} 

de salida: 0 -1 nula

Cuestiones relacionadas