package com.test; public class AtoiTest { public static void main(String[] args) throws Exception { String s = "-011134"; System.out.println("转换前的字符串:" + s); System.out.println("atoi1转换后的字符串:" + atoi1(s)); System.out.println("atoi2转换后的字符串:" + atoi2(s)); } /** * 不用java内置函数,将String字符串转换为数字 * @param s * @return * @throws Exception */ public static int atoi1(String s) throws Exception { if (s == null || s.length() == 0) { throw new Exception("要转换的字符串为空,无法转换!"); } int retInt = 0; int[] num = new int[s.length()]; for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); switch (c) { case \'-\': num[i] = -1; break; case \'0\': num[i] = 0; break; case \'1\': num[i] = 1; break; case \'2\': num[i] = 2; break; case \'3\': num[i] = 3; break; case \'4\': num[i] = 4; break; case \'5\': num[i] = 5; break; case \'6\': num[i] = 6; break; case \'7\': num[i] = 7; break; case \'8\': num[i] = 8; break; case \'9\': num[i] = 9; break; default: throw new Exception("要转换的字符串格式错误,无法转换!"); } } for (int i = 0; i < num.length; i++) { if (num[i] < 0 && i > 0) { throw new Exception("要转换的字符串格式错误,无法转换!"); } if (num[i] < 0) { continue; } retInt += Math.pow(10, num.length - i - 1) * num[i]; } if (num[0] == -1) {//代表负数 retInt = -retInt; } return retInt; } /** * 不用java内置函数,将String字符串转换为数字 * @param s * @return * @throws Exception */ public static int atoi2(String s) throws Exception{ int retInt = 0; if (s == null || s.length() == 0) { throw new Exception("要转换的字符串为空,无法转换!"); } boolean isNegative = false; for (int i = 0; i < s.length(); i++) { if (i==0) { if(s.charAt(i)==\'-\'){ isNegative = true; continue; } }else{ if(s.charAt(i)>\'9\' || s.charAt(i)<\'0\'){ throw new Exception("要转换的字符串格式错误,无法转换!"); } } retInt *=10; retInt += s.charAt(i) - \'0\'; } return isNegative ? -retInt : retInt; } }