方法应该将char转换为整数但不会工作(Java)

时间:2014-07-02 19:36:25

标签: java char integer

我写了一个方法,应该将值为'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;
}

2 个答案:

答案 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

您永远不会将c33之外的任何内容进行比较,因为您不小心将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;
}