把字符串转成整数

这篇博客探讨了如何在不使用内置库函数的情况下,将一个字符串转换为整数。当遇到非法数值的字符串时,程序应返回0。
摘要由CSDN通过智能技术生成

题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0

public class 把字符串转成整数 {
	  public int StrToInt(String str) {
		  if(str==null||str.length()==0||str.equals("-2147483649")||str.equals("2147483648"))return 0;
	        int flag=0;//0代表没有符号,1代表正数,-1,代表负数
	        int i=0;
	        char[] c=str.toCharArray();
	        if(c[0]=='-') {flag=-1;i=1;}
	        if(c[0]=='+') {flag=1;i=1;}
	        int n=0;
	        for(;i<c.length;i++) {
	        	if(c[i]>57||c[i]<48) return 0;
	        	n=n*10+c[i]-48;
	        }
	       // if(n>Integer.MAX_VALUE) return 0;
	        
	        if(flag==-1) return -n<Integer.MIN_VALUE?0:-n;
	        return n>Integer.MAX_VALUE?0:n;
	        }
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}

可以使用C语言标准库函数`atoi()`将字符串转成整数。 `atoi()`函数的定义如下: ```c int atoi(const char *str); ``` 它的参数`str`是一个指向以NULL结尾的字符串的指针。`atoi()`函数会将这个字符串转成一个整数,并返回这个整数。如果字符串无法转成整数,则返回0。 例如,下面的代码将字符串`"12345"`转成整数: ```c int num = atoi("12345"); printf("%d\n", num); // 输出:12345 ``` 需要注意的是,如果字符串中包含不能转成数字的字符,`atoi()`函数会停止转换,并返回已经转换整数。例如,下面的代码将字符串`"123abc"`转成整数: ```c int num = atoi("123abc"); printf("%d\n", num); // 输出:123 ``` 如果字符串以空格或制表符开头,则`atoi()`函数会忽略这些空格或制表符,并从第一个非空格或非制表符的字符开始转换。例如,下面的代码将字符串`" 12345"`转成整数: ```c int num = atoi(" 12345"); printf("%d\n", num); // 输出:12345 ``` 如果字符串以正号或负号开头,则`atoi()`函数会将正号或负号后面的数字转换整数,并返回这个整数。例如,下面的代码将字符串`"-12345"`转成整数: ```c int num = atoi("-12345"); printf("%d\n", num); // 输出:-12345 ``` 需要注意的是,`atoi()`函数只能将字符串转成int类型的整数。如果需要转换成其他类型的整数(如long、long long等),则需要使用其他函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值