字符串转换成整数

时间:2023-01-03 21:53:39

题目详情

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

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



友情提醒

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

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

input:                                          output:

字符串转换成整数                          字符串转换成整数 


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

答题说明


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

import java.util.ArrayList;
import java.util.List;

public class GlobalMembers
{
public static int StrToInt(String str)
{
int result=0,flag=1,start=-1;
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i=0;i<str.length();i++)
{
char temp=str.charAt(i);
if(start==-1)
{
switch(temp)
{
case ' ':break;
case '-':start=0;flag=-1;break;
case '+':start=0;break;
case '0':start=0;break;
case '1':list.add(1);start=1;break;
case '2':list.add(2);start=1;break;
case '3':list.add(3);start=1;break;
case '4':list.add(4);start=1;break;
case '5':list.add(5);start=1;break;
case '6':list.add(6);start=1;break;
case '7':list.add(7);start=1;break;
case '8':list.add(8);start=1;break;
case '9':list.add(9);start=1;break;
default :System.out.println(0);return 0;
}
}
else if(start==0)
switch(temp){
case '0':break;
case '1':list.add(1);start=1;break;
case '2':list.add(2);start=1;break;
case '3':list.add(3);start=1;break;
case '4':list.add(4);start=1;break;
case '5':list.add(5);start=1;break;
case '6':list.add(6);start=1;break;
case '7':list.add(7);start=1;break;
case '8':list.add(8);start=1;break;
case '9':list.add(9);start=1;break;
default :System.out.println(0);return 0;
}
else if(start>0)
switch(temp)
{
case '0':list.add(0);start++;break;
case '1':list.add(1);start++;break;
case '2':list.add(2);start++;break;
case '3':list.add(3);start++;break;
case '4':list.add(4);start++;break;
case '5':list.add(5);start++;break;
case '6':list.add(6);start++;break;
case '7':list.add(7);start++;break;
case '8':list.add(8);start++;break;
case '9':list.add(9);start++;break;
default :i=str.length();break;//使循环停止
}
}
if(start<=0) return 0;
else if(start>0)
{
int len=list.size();
for(int i=0;i<len;i++)
{
Integer x=list.get(i);
for(int j=0;j<len-i-1;j++)
x*=10;
result+=x;
}
result*=flag;
}
System.out.println(result);
return result;
}


//start 提示:自动阅卷起始唯一标识,请勿删除或增加。
public static void main(String args[])
{
StrToInt(" -01023a");
}
//end //提示:自动阅卷结束唯一标识,请勿删除或增加。
}