把字符串转换为整数

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

本题目不是很难,但有几个注意事项

1.要判断输入字符串是否有效,即判断输入字符串是否为空和判断字符串中有没有其他非数字的字符

2.判断字符串开头是否带有符号,例如输入“+123”,结果为“123”,输入“-123”,结果为“-123”

3.输入正常时,开始计算,还是以"345"作为例子。当我们扫描到字符串的第一个字符'3'时,我们不知道后面还有多少位,仅仅知道这是第一位,因此此时得到的数字是3。当扫描到第二个数字'4'时,此时我们已经知道前面已经一个3了,再在后面加上一个数字4,那前面的3相当于30,因此得到的数字是3*10+4=34。接着我们又扫描到字符'5',我们已经知道了'5'的前面已经有了34,由于后面要加上一个5,前面的34就相当于340了,因此得到的数字就是34*10+5=345。因此,计算思路是,每扫描一个字符,将之前得到的结果乘以10加上当前扫描字符表示的数字。

4.函数返回值为boolean表示输入是否合法,用一个static变量来存放结果

5.由于输入为字符串,因此可能存在溢出问题,所以用long型来存放结果

参考网址:http://zhedahht.blog.163.com/blog/static/25411174200731139971/

public class Test_17 {

	static long result = 0;

	public static void main(String[] args) {
		String str = "+1234564564455665";
		if (strToint(str) == false) {
			System.out.println("输入不合法");
			return;
		}
		System.out.println(result);

	}

	public static boolean strToint(String str) {
		// int result = 0;
		if (str == null) {
			return false;// 输入无效
		}
		int signal = 1;
		// 判断是否有符号
		if (str.charAt(0) == '-' || str.charAt(0) == '+') {

			for (int i = 1; i < str.length(); i++) {
				// 判断是否有非数字的输入
				if (str.charAt(i) < '0' || str.charAt(i) > '9')
					return false;
				result = result * 10 + (str.charAt(i) - '0');
			}
			if (str.charAt(0) == '-')
				result = 0 - result;
		} else {
			for (int i = 0; i < str.length(); i++) {
				// 判断是否有非数字的输入
				if (str.charAt(i) < '0' || str.charAt(i) > '9')
					return false;
				result = result * 10 + (str.charAt(i) - '0');
			}
		}
		return true;
	}

}


 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值