不用java内置函数,将String字符串转换为数字

package xiaomei.com;

public class Main {

	public static void main(String[] args) throws Exception{
	    String s = "-7830567";
	    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;
	  }
}

猜你喜欢

转载自blog.csdn.net/damei2017/article/details/86631001