題目描述
將一個字符串轉換成一個整數(實現Integer.valueOf(string)的功能,但是string不符合數字要求時返回0),要求不能使用字符串轉換整數的庫函數。 數值為0或者字符串不是一個合法的數值則返回0。
輸入描述:
輸入一個字符串,包括數字字母符號,可以為空
輸出描述:
如果是合法的數值表達則返回該數字,否則返回0
示例1
輸入
+2147483647 1a33
輸出
2147483647 0
/** * * @author gentleKay * 題目描述 * 將一個字符串轉換成一個整數(實現Integer.valueOf(string)的功能,但是string不符合數字要求時返回0), * 要求不能使用字符串轉換整數的庫函數。 數值為0或者字符串不是一個合法的數值則返回0。 * 輸入描述: * 輸入一個字符串,包括數字字母符號,可以為空 * 輸出描述: * 如果是合法的數值表達則返回該數字,否則返回0 * 示例1 * 輸入 * +2147483647 * 1a33 * 輸出 * 2147483647 * 0 */ public class Main48 { public static void main(String[] args) { // TODO Auto-generated method stub String str = "-13246+546+"; System.out.println(Main48.StrToInt(str)); } public static int StrToInt(String str) { if (str.length() == 0 || str.equals("")) { return 0; } char[] ch = str.toCharArray(); int symbol = 0; if (ch[0] == '-') { symbol = 1; } int sum = 0; for (int i=symbol;i<ch.length;i++) { if (ch[i] == '+') { continue; } if (ch[i] < 48 || ch[i] > 57) { return 0; } sum = sum*10 + ch[i]-48; } return symbol == 0 ? sum : sum * -1; } }