java实现整数反转

java实现整数反转,第1张

java实现整数反转

一、将 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实现整数反转的详细内容,

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/689003.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-21
下一篇 2022-04-21

发表评论

登录后才能评论

评论列表(0条)

保存