• 技术文章 >Java >Java入门

    java实现整数反转

    VV2020-01-06 17:35:03转载1946

    一、将 int 整数通过 String 转换,溢出捕获

    	class Solution {
    	    public int reverse(int x) {
    	    	 long nums = 0;
    	    	 int temp = 1;
    	    	 try {
    		        temp = x / Math.abs(x);
    		        StringBuilder num = new StringBuilder();
    		        num.append(Math.abs(x));
    	        	nums = Long.parseLong(num.reverse().toString());
    		    	if(nums > Math.pow(2, 31) - 1) {
    		    		return 0;
    		    	}
    	        } catch (Exception e) {
    				// TODO: handle exception
    	        	return 0;
    			}
    	    	return (int)nums*temp;
    	    }	
    	}

    字符串转换的效率较低且使用较多库函数。

    (推荐学习视频教程:java视频教程

    二、取余方式

    	class Solution {
    	    public int reverse(int x) {
    	    	int ans = 0;
    	    	while(x != 0) {
    	    		// 判断溢出
    	    		if((ans * 10) / 10 != ans) {
    	    			ans = 0;
    	    			break;
    	    		}
    	    		// ans*10 没有溢出
    	    		ans = ans * 10 + x % 10;
    	    		x /= 10;
    	    	}
    	    	return ans;
    	    }	
    	}

    (ans * 10) / 10 其中的 ans*10 ,java虚拟机内部实际上是进行了数值类型提升,即溢出时,用long类型数据暂时存储,最后通过变窄转换,保留低32位数值得到 (ans * 10) / 10 != ans 。因此是不能满足只存储32位整数的条件的。

    相关文章教程推荐:java入门教程

    以上就是java实现整数反转的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:CSDN,如有侵犯,请联系admin@php.cn删除
    专题推荐:java 实现 整数 反转
    上一篇:关于java正则?:、?=、?!的一些理解 下一篇:关于java中创建线程的方式的总结
    大前端线上培训班

    相关文章推荐

    • java中实现多态的原理是什么• java对象拷贝常见面试题• java中如何优化数组的输出形式• 关于java正则?:、?=、?!的一些理解

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网