将一个字符串转换成一个整数
2017-06-15 21:32
260 查看
题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0[b]输入描述:[/b]
输入一个字符串,包括数字字母符号,可以为空
[b]输出描述:[/b]
如果是合法的数值表达则返回该数字,否则返回0
[b]输入例子:[/b]
+2147483647 解题思路: 1. 将输入的字符串转换成字符数组。从大下标开始,反向对每个字符逐个处理,一直到下标为1为止;下标为0的位置字符需单独考虑。 2. 若当前字符的ASII码在[48~57],注意是闭区间。则代表当前字符是[0~9],继续判断下一个。 3. 当遍历到下标为0的字符时,需要进行特殊情况的几个判断。包括是否越界,是否是临界值,是否为负号等。 具体包括: 是否不在48-57之间,如果不在,是否是“+”或者“-”,
代码:package JianZhiOffer;
import java.util.Scanner;
public class StrToInt
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
while(sc.hasNextLine())
{
String s=sc.nextLine();
int result=StrToInt(s);
System.out.println(result);
}
}
public static int StrToInt(String str)
{
if(str==null || str.length() == 0){
return 0;
}
int result = 0;
char[] chs = str.toCharArray();
int len = chs.length;
for(int i=len-1, j=0; i>0; i--, j++){
int c = (int)chs[i];
if(c<48 ||c>57){
return 0;
}else{
result += (c-48)*Math.pow(10, j);
}
}
if(chs[0]<48&&chs[0]!=45&&chs[0]!=43 ||chs[0]>57)
return 0;
int c = (int)chs[0];
if(c<=57&&c>=48)
{
result += (c-48)*Math.pow(10, len-1);
}
if(resul
4000
t<-2147483648 || result>2147483647)
{
return 0; //越界,如果真的越界,直接会报错,result本身没办法越界
}
else if(str.equals("2147483648"))
{
result = result;
}
else if(str.equals("-2147483648"))
{
result = -2147483648; //边界值
}
else
{
if(c==43)
result = result;
if(c == 45)
{
result = -result; //负号处理
}
}
return result;
}
}
相关文章推荐
- 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
- 算法:将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。
- 《剑指offer》-将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数
- 将一个字符串转换成一个整数
- 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
- 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
- 将一个字符串转换成一个整数
- Java编程题:将一个十六进制的字符串转换成一个十进制的整数
- 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数
- //实现一个atoi的函数,atoi是将字符串转换成整数
- 如何将一个整数转换成字符串
- 输入一个表示整数的字符串,把该字符串转换成整数并输出
- 20、输入一个表示整数的字符串,把该字符串转换成整数并输出
- 编写函数,其功能是:将一个数字字符串转换为一个整数(不得调用C语言中提供的将字符串转换成整数的函数。)要求在主函数中输入该字符串并输出转换后的整数的值。
- 汉字字符串转换成十六进制byte数组,一个汉字存到两个byte里面,大整数存到两个byte里面
- 第20题: 题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。 例如输入字符串"345",则输出整数345。
- 不能转换为字符串,将一个整数倒序,如1234转换为4321
- [算法学习]将一个随机的整数转换成一个按各位上数值大小排序的整数
- JavaScript中如何将一个字符串,转换成一个对象类型
- 黑马程序员之C#编程基础学习笔记:有一个整数数组,请声明一个字符串数组,将整数数组中的每一个元素的值转换为字符串保存到字符串数组中