java程序挑战_某网站的编程挑战题目 Java版本的 strToInt

题目详情

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

请完成函数StrToInt,实现字符串转换成整数的功能。

友情提醒:

提交代码之前,请复查下你的程序,比如当给的字符串是如左边图片所示的时候,有考虑到么?

当然,它们各自对应的正确输出如右边图片所示(假定你是在32位系统下,编译环境是VS2008以上)

input:                                          output:

cf0ac818442ecb1eacf85c417a88b807.png                          

a0ae1e7d41a8b710e1f6e8d1c4f5c66f.png 

注:以上只是部分测试数据,不代表上述数据通过了,即挑战成功。

答题说明

完成功能函数StrToInt即可,但不要去改动函数名,参数,至于main函数是为方便你在提交代码之前进行在线编译测试;

不得用库函数atoi。

我提交的代码:

public static int StrToInt(String str)

{

int d = 0;

// filter 1: "" " " "++" "--" "+ " "- "

if (str == null || "".equals(str.trim()) || str.indexOf("++")>=0

|| str.indexOf("--")>=0 || str.indexOf("+ ")>=0 || str.indexOf("- ")>=0)    {

return d;

}

str = str.trim();

// filter 2: only number

Character cur = null;

StringBuffer sb = new StringBuffer();

for(int i=str.length()-1;i>0;i--){

cur = str.charAt(i);

if ( cur < '0' || cur > '9' ){

sb = new StringBuffer();

continue;

}

sb.insert(0,cur);

}

// the first char: + or - or number or other

int flag = 1;

if (str.charAt(0)=='-'){

flag = -1;

}else if(str.charAt(0)=='+'){

// nothing

}else if( str.charAt(0)>='0' && str.charAt(0)<='9'){

sb.insert(0, str.charAt(0));

}else{

sb = new StringBuffer();

}

if (sb.length()<1){

return d;

}

// border value

try{

long dd = Long.parseLong(sb.toString()) * flag;

if (dd>Integer.MAX_VALUE){

return Integer.MAX_VALUE;

}

if(dd

return Integer.MIN_VALUE;

}

}catch(Exception e){

e.printStackTrace();

}

// str to int

int f = 10;

int i=sb.length()-1;

d = sb.charAt(i)-'0';

while(--i>=0){

d += (sb.charAt(i)-'0') * f;

f = f * 10;

}

return d * flag;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值