Java Long 在Integer的overflow的范围overflow
2015-01-11 04:58
483 查看
为了防止Integer overflow。利用long存储数据
public int reverse(int x) {
ArrayList <Integer> list = new ArrayList();
while( x != 0){
list.add(x % 10);
x /= 10;
}
long result =0;
int ten = 1;
for(int i = list.size() - 1;i >= 0;i--){
result += ten * list.get(i);
ten *= 10;
System.out.println(result);
if(result > Integer.MAX_VALUE|| result < Integer.MIN_VALUE)
return 0;
}
return (int) (long) result;
}
但是当数值超越了int的最大值的时候,并没有返回0.
正确的做法是
result += (long)ten * list.get(i);
将其强制转换成long
public int reverse(int x) {
ArrayList <Integer> list = new ArrayList();
while( x != 0){
list.add(x % 10);
x /= 10;
}
long result =0;
int ten = 1;
for(int i = list.size() - 1;i >= 0;i--){
result += ten * list.get(i);
ten *= 10;
System.out.println(result);
if(result > Integer.MAX_VALUE|| result < Integer.MIN_VALUE)
return 0;
}
return (int) (long) result;
}
但是当数值超越了int的最大值的时候,并没有返回0.
正确的做法是
result += (long)ten * list.get(i);
将其强制转换成long
相关文章推荐
- JAVA中Integer值的范围实例代码
- 一道面试题关于Integer的缓存范围(-128~127)所引起的一系列问题记录
- Integer取值范围和NumberFormatException的解决
- Integer自动装箱超出赋值范围
- leetcode_26题——Reverse Integer(int型的表示范围)
- [厉害了,我的JAVA基础](四)int 和 Integer 有什么区别?Integer的值缓存范围
- mysql整型数值范围区分INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT,tinyint(1) tinyint(3)
- Java中的无声杀手 – Integer Overflow, 当心 !
- CSS使用overflow隐藏超出范围的内容
- Integer 数值范围在-128~127之间时分别使用 ==和 equals进行比较
- Integer源码,为什么缓存范围在【-128—+127】?
- 如何解决 a+b >c 和 a*b 和 a-b 的 integer overflow 问题
- csharp OverflowException——超出数值范围会抛出异常
- Mod_proxy from apache 1.3 - Integer overflow which causes heap overflow.
- Microsoft Windows Outlook Express and Windows Mail Integer Overflow
- java Long转换为Integer
- Delphi - SuperObject : raised exception class eintoverflow with message'Integer overflow'.
- MS07-004 VML integer overflow exploit
- Check for Integer Overflow
- 7. Reverse Integer(整数反转,注意超范围记为0)