将空字符串转换为整数

20

有没有办法将null转换为Integer。实际上,这个null是一个字符串,在我的服务层中我将其作为整数接受。因此,每当我尝试将空字符串转换为Integer时,它就会抛出异常。但我必须将null转换为Integer。


1
你是使用 Integer.parseInt() 还是直接强制类型转换? - Jon Egeland
4
你能否提供一个简单的代码例子?在Java中,null可以属于所有类型,因此将一个"String"null强制转换为"Integer"null不应该有问题。 - oconnor0
你能给我们展示一下你正在使用的代码行吗? - aldrin
2
你不能将 null 转换为 int(但可以转换为 Integer)- 但是你可以创建一个检查 null 并返回 int 的方法。 - Nir Alfasi
2
顺便问一下,CAST对你做了什么,让你这么想虐它? ;) - Nir Alfasi
6个回答

26

您无法将字符串转换为整数。但是,如果您想将字符串转换为整数并且必须提供处理null字符串的实现,请查看此代码片段:

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

3
捕获 Exception 通常不是一个好主意,最好单独捕获 NumberFormatException 和 NullPointerException。 - Craig Ringer
1
@CraigRinger 您是正确的!我已经相应地更改了我的代码。感谢您有用的评论 :) - Juvanis

24
如果你正在使用 apache commons,那么有一个辅助方法可以解决问题:

NumberUtils.createInteger(myString)

文档中所述:
"将一个 String 转换成 Integer,处理十六进制和八进制表示法;如果字符串是 null,则返回 null;如果无法转换值,则抛出 NumberFormatException。"

1
这个对你有用吗?我尝试在一个空字符串上运行它,结果抛出了NullPointerException... - Michal Tenenberg
它对我有用。你确定你的NumberUtils来自apache commons而不是另一个库吗? - Xavier Portebois
但是您应该知道,该方法不调用 Integer#parseInt()/valueOf(),而是调用 Integer#decode() - d56

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

试试这个


这太棒了! - tsig
1
这应该是 int.Parse(0 + s); 而不是反过来。这样做可以确保在s为空字符串时也能正常工作,但如果s为11,则当前方法会返回110。 - cogumel0

2
这个怎么样?
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);
    }
}

2
尝试以下代码:application如果字符串为空,则返回0;否则,如果字符串仅包含数字,则将其解析为int
代码:
(str.equals("null")?0:Integer.parseInt(str))

0

如果您确定只需要处理空值,

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

对于非整数字符串,它会抛出 Numberformat 异常。


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