将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。
public class test4 { public static int byFunc(String s){ return Integer.valueOf(s); } public static int convertConventional(String s){ if(s.length()==0){ return 0; } char[] c = s.toCharArray(); int flag = 0; if(c[0] == '+'){ flag = 1; }else if (c[0] == '-'){ flag = 2; } int start = flag > 0 ? 1 : 0; for(int i = start; i < c.length; i++){ if(!Character.isDigit(c[i])){ return 0; } } return Integer.valueOf(s); } public static int myConvert(String s){ if(s.length() == 0){ return 0; } char[] chars = s.toCharArray(); //判断是否存在符号位 int flag = 0; if(chars[0] == '+'){ flag = 1; }else if (chars[0] == '-'){ flag = 2; } int start = flag > 0 ? 1 : 0; int res = 0; for(int i = start; i < chars.length;i++){ if(Character.isDigit(chars[i])){ int temp = chars[i] - '0'; res = res * 10 + temp; }else{ return 0; } } return flag !=2 ? res : -res; } public static void main(String[] args){ Scanner in = new Scanner(System.in); while(in.hasNext()){ String input = in.nextLine(); //System.out.println("使用库函数:"+byFunc(input)); System.out.println("我对库函数优化:"+convertConventional(input)); System.out.println("我的方法:"+myConvert(input)); } in.close(); } }