题目如下
这个题目的思路是,我们要遍历字符串,如果遇到字符是0-9的话,那么替换为字符串number,如果是小写字符,直接拼接。
这个时候就会有同学这么写:
public static void changeNumber(String string){
StringBuilder sb = new StringBuilder();
for(int i = 0; i < string.length(); i++){
char curChar = string.charAt(i);
if(curChar >= 0 && curChar <= 9){
//遇到数字拼接”number“
sb.append("number");
}else {
sb.append(curChar);
}
}
System.out.println(sb.toString());
}
看起来是不是没什么问题,执行以下就会发现有大问题!ASCII表中字符’0’对应的十进制数是48,因此当遇到字符’0‘-’9‘时,不会替换为”number“!!
正确的解答如下:
public class KaMa54 {
public static void changeNumber(String string){
StringBuilder sb = new StringBuilder();
for(int i = 0; i < string.length(); i++){
char curChar = string.charAt(i);
if(curChar >= 97){ //小写字符直接拼接,a字符在ASCII表中对应97
sb.append(curChar);
}else {
//遇到数字拼接”number“
sb.append("number");
}
}
System.out.println(sb.toString());
}
public static void main(String[] args) {
changeNumber("a1b2c3");
}
}
总结一下:
ASCII表中字符’0’对应的十进制数为48
字符‘A’对应64
字符‘a’对应97