我写了一个方法,应该将值为'3'的char转换为'9'为整数值。 它应该将c的ASCII值与33(3)到39(9)进行比较。我得到的唯一结果是-1。如果你知道更好的方法 我感谢你的帮助,但我也想知道我的错误在哪里。提前致谢
static int count(char c){
int i = 33;
for (int i = 33;i<40;i++){
if (c == i) return i;
}
return -1;
}
答案 0 :(得分:3)
if(c < '3' || c > '9')
return -1; // If ASCII code is not in the range '3' to '9' return -1
else
return (int)(c - '0'); // return ASCII code - '0' code (the number itself)
答案 1 :(得分:1)
尽管您声称,但您的代码无法编译!最重要的是,你得到了
missing return statement
您永远不会将c
与33
之外的任何内容进行比较,因为您不小心将return
置于循环而非外部。
此外,3
的Unicode代码点是33 16 (33 hex,又名51),而不是33 10 (33十进制)。
修正:
static int count(char c) {
for (int i=0x33; i<0x40; i++){
if (c == i)
return i;
}
return -1;
}
但你可以把它写成
static int count(char c) {
return c >= '3' && c <= '9' ? c : -1;
}