題目描述
將一個字符串轉換成一個整數(實現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;
}
}
