背景:
经历的一些大大小小的面试,死在一些题目上,特此纪念!
1、把一个字符串转化成数字,不能用parseInt等,例如:“123456”转化成数字123456.
(考虑一下特殊情况的处理,为空或字符串中有字母)
public class Test1 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("str = ");
String str = input.nextLine();
System.out.println(new Test1().atoi(str));
}
public int atoi(String s) {
int[] num = new int[10];
int j = 0;
String tmp = null;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(0) == '-' || Character.isDigit(s.charAt(i))) {
if (s.charAt(0) == '-') {
tmp = "-";
}
switch (s.charAt(i)) {
case '0':
num[j] = 0;
j++;
continue;
case '1':
num[j] = 1;
j++;
continue;
case '2':
num[j] = 2;
j++;
continue;
case '3':
num[j] = 3;
j++;
continue;
case '4':
num[j] = 4;
j++;
continue;
case '5':
num[j] = 5;
j++;
continue;
case '6':
num[j] = 6;
j++;
continue;
case '7':
num[j] = 7;
j++;
continue;
case '8':
num[j] = 8;
j++;
continue;
case '9':
num[j] = 9;
j++;
continue;
}
} else {
return 0;
}
}
int NUM = (int) Math.pow(10, j);
int a = 0;
for (int i = 0; i < num.length; i++) {
NUM = NUM / 10;
a += num[i] * NUM;
}
if (tmp != null) {
return -a;
}
return a;
}
}