如何在Java中将String转换为int,同时注意下溢和溢出int?

时间:2015-06-26 12:34:00

标签: java string int

我使用以下代码将String转换为int:

int foo = Integer.parseInt("1234");
如何确保int值不会溢出或下溢?

2 个答案:

答案 0 :(得分:6)

As the documentation says,如果输入字符串不包含可解析的整数,则会抛出NumberFormatException。这包括整数输入但超出int范围的输入。

条款"下溢"和"溢出"不是你在这里寻找的术语:它们指的是你在有效范围内有几个整数(比如20亿)的情况,你将它们加在一起(或执行一些算术运算,达到类似的效果)并获得有效范围之外的整数。这通常会导致像因为Two's Complement等而包含在底片中的问题。另一方面,你的问题只是一个简单的字符串编码整数,位于有效范围之外。

答案 1 :(得分:1)

您可以随时查看:

long pre_foo = Long.parseLong("1234");
if (pre_foo < Integer.MIN_VALUE || pre_foo > Integer.MAX_VALUE){
    //Handle this situation, maybe keep it a long, 
    //or use modula to fit it in an integer format
}
else {
    int foo = (int) pre_foo;
}