`
zhengqiqi17
  • 浏览: 7497 次
社区版块
存档分类
最新评论

atio函数的java实现

 
阅读更多

转载自: http://blog.csdn.net/beiyeqingteng

问题:

把一个字符串转成一个整数。(美团网2015校招天津站笔试题)

思路:

其实,这道题考的不是怎么去把一个数转成一个整数,而是考你是否能够把所有的情况都考虑完全,我们应该考虑的因素如下:

1. 这个字符串是否是空的。

2. 这个字符串是否有非法字符(非0-9之间的字符)。

3.这个数是正数或者是负数的情况(第一个字符是否为+,-)。

4. 是否存在溢出的情况(这个比较难考虑到)。

 
public static long atoi(String str) throws Exception {
	
	boolean negative = false;
	long value = 0;
	
	if (str == null || str.equals("")) {
		throw new Exception("null string or the string has no character!");
	} 
	
	for (int i = 0; i < str.length(); i++) {
		if (i == 0 && (str.charAt(0) == '-' || str.charAt(0) == '+')) {
			if (str.charAt(0) == '-') {
				negative = true;				
			}
		} else {
			if (str.charAt(i) >= '0' && '9' >= str.charAt(i)) {
				value = value * 10 + (str.charAt(i) - '0');
				if (value > Integer.MAX_VALUE) {
					throw new Exception("OUT OF INTEGER RANGE");
				}
			} else {
				throw new NumberFormatException("not an integer");
			}
		}
	}
	return negative == true ? value * -1 : value; 			
}


 

分享到:
评论

相关推荐

    java常用工具类的使用

    “工欲善其事,必先利其器”,在Java程序开发过程中,很多算法(比如:MD5加密算法)、很多数据结构(比如链表LinkedList)已经实现并且大多放在类库的java.util包中,程序员只需要了解各种工具的功能就可以直接调用...

    java基础入门教程

    2 软 件 的 开 发 方 法 :由 于 Java 语 言 的 面 向 目 标 的 特 性 , 所以完 全 可 以 用 O-O的技 术 与 方 法 来 开 发 ,这 是 符 合 最 新 的 软件 开 发 规 范 要 求 的 。 3 Java 语 言 的 动 画 效 果 远 ...

    java编写的计算器,能实现加减乘除

    java编写的计算器,能实现加减乘除。 //***该梦幻计算器与Windows附件自带计算器的标准版功能、界面相仿***// //******但还不支持键盘操作,如有需要,下一次等级将满足你**********// import java.awt.*; import ...

    java 面试题 总结

    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...

    达内 coreJava 习题答案

    sum=i*i*i+j*j*j+k*k*k; if (sum==number) System.out.println(number+" is a dafodil number! "); } } } 7、求 a+aa+aaa+.......+aaaaaaaaa=? 其中a为1至9之中的一个数,项数也要可以指定。 import java....

    TCP-IP详解卷3:TCP事务协议

    第18章 Unix域协议:I/O和描述符的传递 210 18.1 概述 210 18.2 PRU_SEND和PRU_RCVD请求 210 18.3 描述符的传递 214 18.4 unp_internalize函数 218 18.5 unp_externalize函数 220 18.6 unp_discard函数 221 18.7 unp...

    javascript版本的轨道六根数计算卫星位置的函数

    javascript版本的轨道六根数计算卫星位置的函数 /* 参数例子: orbitPara = { o: 20,//升交点赤径(单位度) i: 30,//轨道倾角(单位度) w: 10,//近地点角距(单位度) a: 7000e+3,//半长轴(单位米) e: 0.5,//离心...

    Java语言与面向对象与程序设计.rar

    第1章 面向对象软件开发概述MSCBSC 移动通信论坛4o&D'f:G:\ P&M,...8.5 用Java实现底层网络通信 &Y6H/J*]3}0O*m%Y | 国内领先的通信技术论坛8.6 Java程序对网上资源的访问 (U$A9~+^/~:w$g(u.K2^www.mscbsc.com8.7 小结

    java 正则表达式

    应用:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现,如下: String.prototype.trim = function(){return this.replace(/(^\s*)|(\s*$)/g, "");} 利用正则表达式分解和转换IP地址: ...

    MySQL中文参考手册

    o 1.1 什么是MySQL? o 1.2 关于本手册 + 1.2.1 本手册中使用的约定 o 1.3 MySQL的历史 o 1.4 MySQL的主要特征 o 1.5 MySQL稳定性? o 1.6 顺应2000年 o 1.7 SQL一般信息和教程 o 1.8 有用的MySQL相关链接 ...

    JSTL详细标签库介绍

    I/O End、网络信息到达、点击鼠标、敲击键盘)这些最好使用java事件监听。异常处理程序:能够让系统在出现异常的情况下恢复过来的程序使用异常处理情况:异常诊断与异常处理不在同一个位置下时使用异常处理程序(若...

    PHP手册2007整合中文版

    O. 支持的协议/封装协议列表 P. 可用过滤器列表 Q. 所支持的套接字传输器(Socket Transports)列表 R. PHP 类型比较表 S. 解析器代号列表 T. Userland Naming Guide U. 关于本手册 V. 开放出版许可协议 W. 函数...

    PHP5 开发手册 简体中文手册

    I. 入门指引 1. 简介 2. 简明教程 II. 安装与配置 3. 安装前需要考虑的事项 4. Unix 系统下的安装 5. Mac OS X 系统下的安装 6. Windows 系统下的安装 7. PECL 扩展库安装 8. 还有问题? 9. 运行时配置 III. 语言...

    2017最新大数据架构师精英课程

    1_java基础2 l3 a2 a$ t7 J2 b+ `- p 2_java引入ide-eclipse 3_java基础知识-循环-类型转换 4_循环-函数-数组-重载 5_多为数组-冒泡-折半-选择排序 6_oop-封装-继承-static-final-private 7_多态-接口-异常体系 8_...

    PHP官方手册中文版

    T. Userland Naming Guide U. 关于本手册 V. 开放出版许可协议 W. 函数索引 X. 补充说明 X. CHM 版本 73. 关于此版本 74. Using PHP Manual CHM Edition 75. The Full Text Search 76. Specialities of ...

    php帮助文档,php。chm,php必备的中文手册

    O. 所支持的套接字传输器(Socket Transports)列表 P. PHP 类型比较表 Q. 解析器代号列表 R. 关于本手册 S. 开放出版许可协议 T. 函数索引 X. CHM 版本 62. 关于此版本 63. Using PHP Manual CHM Edition 64. The ...

    新版Android开发教程.rar

    o Not Not Not Not compatible with Gnu Compiler for Java (gcj) Note: Note: Note: Note: If JDK is already installed on your development computer, please take a moment to make sure that it meets the ...

    【05-面向对象(下)】

    基本数据类型的包装类 •八大数据类型的包装类分别为:Byte、Short、Integer、Long、Character、 Float、Double、Boolean。...函数式接口中被实现方法的第一个参数作为调用者,后面的参数全部传给该...

    Hacking Vim

    实现标签跳转,C/C++/Java编程时很有用。命令行下ctags –R *创立标签,Ctrl+]/Ctrl+O跳转,Ctrl+T返回 3.2 taglist 生成文件纲要,包括函数、关键字等。安装后使用:Tlist 3.3 A 实现头文件跳转。ctags不能查找...

    操作系统(内存管理)

    free:该函数获得指向由 malloc 分配的内存片段的指针,并将其释放,以便以后的程序或操作系统使用(实际上,一些 malloc 实现只能将内存归还给程序,而无法将内存归还给操作系统)。 物理内存和虚拟内存 要理解...

Global site tag (gtag.js) - Google Analytics