oracle 转化为整数,字符串转换成整数——从源码学习

字符串转换成整数:输入一个表示整数的字符串,把该字符串转换成整数并输出,例如输入字符串”345”,则输出整数345。

在笔试面试中,atoi 即「字符串转换成整数」是一个经典问题了,此题无关算法,考察的更多是编码能力和细节考虑能力。因此自己就动手写了下,写完之后,打开 JDK 的源码想看看大牛是怎么写的,所谓「站在巨人的肩膀上」,果然还是有很多有意思的东西的。

首先,实现的思路是扫描整个字符串,扫描到当前字符时,将之前的结果乘以10加上当前字符代表的数字。

思路是很简单,但是有很多细节需要考虑,也是本题考查的重点。

开头可能会有 ‘+’ 和 ‘-‘,表示整数的正负。

字符串为 null 或是空(””)呢?

字符串中包含非数字的字符

只有一个 “+” 或 “-“ 字符呢?

最后就是溢出问题。

先放出我的代码吧!public static int atoi(String s) throws Exception{

if (s == null || s.length() == 0) {

throw new Exception("illegal number input");

}

final int MAX_DIV = Integer.MAX_VALUE / 10;

final int MIN_DIV = -(Integer.MIN_VALUE / 10);

final int MAX_M = Integer.MAX_VALUE % 10;

final int MIN_M = - (Integer.MIN_VALUE % 10);

int result = 0;

int i = 0, len = s.length();

int sign = 1;

int digit = s.charAt(0); //当前字符

if (digit == '-' || digit == '+') {

if (digit == '-') {

sign = -1;

}

if (len == 1) {

throw new Exception("illegal number input

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值