如何检查一个整数是否不为空或null?

15

我真的不知道是否可能。 但是我被卡在一个地方,我想检查一个null的int值,以调用不同的方法。

有什么办法可以做到这一点吗?

实际上,变量来自带有null值的浏览器。 我无法将int声明更改为Integer。因为它有自己的后果。

有什么建议吗?


“那个变量来自一个带有空值的浏览器” - 你的意思是什么?正如Bozho所指出的,这显然是不可能的。 - Konrad Rudolph
@Konrad Rudolph:您对以下内容进行了投票:“该变量来自一个值为空的浏览器”。我通过Bozho的答案解决了我的问题,“那么它就是转换器决定是否将其设置为0” 是的,Int不能为null,不可能的。但是转换器可以将空值更改为“0”以将其分配给int变量。现在告诉我为什么您要投反对票?我的问题有什么问题吗?我很清楚地开始说“我真的不知道这是否可能。” 这是什么意思!!!在投反对票之前三思。 - user405398
我没有给你的问题点踩。你的问题可能是有道理的(我不确定,但是如果我不确定就不会点踩),我只是在请求澄清。 - Konrad Rudolph
@Konrad Rudolph:啊啊啊……真的很抱歉,朋友……对不起……但是评论还在。所以,那个给我投反对票的人会知道我的解释。再次道歉!! - user405398
Downvote:你所描述的情况是不可能的。更多的信息可能会澄清问题。 - user207421
9个回答

42

int变量不能为null

如果要将null转换为int,则由转换器决定是否设置0,抛出异常或设置另一个值(例如Integer.MIN_VALUE)。尝试使用自己的转换器。


int?怎么办?有类似于string.IsNullOrEmpty()的函数吗? - Wouter Vanherck

5
我认为您在询问这样的代码。

我想你是在询问像这样的代码。

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

5

我认为您可以将变量初始化为-1,因为如果未初始化int类型的变量,则无法使用它。当您想要检查它不是您想要的值时,可以检查它是否为-1


2
如果你的 int 变量被声明为类级别变量(实例变量),它会默认为 0。但这并不意味着来自客户端的值是 0 还是 null。你可以创建一个 setter 方法来初始化/设置客户端发送的值。然后你可以定义你的指示值,也许是一些负值来表示 null。

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);
    }
}

输出:0 null -1

0

int 不能为 null。如果您没有为 int 赋任何值,则默认值将为 0。如果您想检查 null,则在声明中将 int 设为 Integer。然后 Integer 对象可以为 null。因此,您可以检查它是否为 null。即使在 javax bean 验证中,除非将变量声明为 Integer,否则无法获得 @NotNull 注释的错误。


这只是一条评论,而不是答案。随着更多的声望,您将能够发布评论 - Enamul Hassan

0

可能浏览器返回了某个整数值的字符串表示形式? 实际上,int类型不能为null。 如果值不为null,您可以检查是否为null,然后将字符串表示形式转换为int。


0
如果您正在接收整数输入,我建议先检查文本本身是否为空,然后将变量设置为它的.toInt()。

-2

整数类型不能为 null,但有一种非常简单的方法可以实现您想要做的事情。使用 if-then 语句,在其中检查整数的值是否为所有可能的值之一。

例如:

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 
}

免责声明: 我假设Java在没有看到数值的情况下不会自动将数值设置为0。

1
字段具有默认值为0;局部变量必须分配一个值,否则代码将无法编译。对于任何有效的代码,这个条件始终为真。 - kiheru

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接