返回char的问题

时间:2016-09-10 04:26:27

标签: java if-statement methods char return-type

我不明白为什么我收到错误声明方法getClassification必须返回char类型的结果。

private char A, B, C, D;

public char getClassification() {
    if(parts[0] >= 0 && parts[0] <= 127)
        return (A);
    else if(parts[0] >= 128 && parts[0] <= 191)
        return (B);
    else if(parts[0] >= 192 && parts[0] <= 223)
        return (C);
    else if(parts[0] >= 224 && parts[0] <= 255)
        return (D);
}

4 个答案:

答案 0 :(得分:3)

当所有if条件都为false时,getClassification不会返回值。

private char A, B, C, D;

public char getClassification() {
    if(parts[0] >= 0 && parts[0] <= 127)
        return (A);
    else if(parts[0] >= 128 && parts[0] <= 191)
        return (B);
    else if(parts[0] >= 192 && parts[0] <= 223)
        return (C);
    else if(parts[0] >= 224 && parts[0] <= 255)
        return (D);
    else
       return //Something Else(char Value)
}

这应该有用。

答案 1 :(得分:1)

需要else语句或默认的return语句

答案 2 :(得分:0)

您已将每个return语句放在if语句中。

当你将所有return语句置于if条件内时,编译器不够聪明,无法确定你从函数返回的内容的确定性(即使函数是肯定的将返回提到的类型)。

尝试编译它,编译器会抱怨同样的事情:

public char getClassification() {
    if(true) return 'a';
}

答案 3 :(得分:0)

根据条件是否返回字符a,b,c,d,但在某些条件下,如果所有条件都为假(例如,部分[0]> 255或部分[0] <0),则函数不返回任何内容。为了避免错误,请在最后写下else条件。

private char A, B, C, D;

public char getClassification() {
    if(parts[0] >= 0 && parts[0] <= 127)
        return (A);
    else if(parts[0] >= 128 && parts[0] <= 191)
        return (B);
    else if(parts[0] >= 192 && parts[0] <= 223)
        return (C);
    else if(parts[0] >= 224 && parts[0] <= 255)
        return (D);
    else
        return 'E';
}

  

私人字符A,B,C,D;

     

public char getClassification(){

     

if(parts [0]&gt; = 0&amp;&amp; parts [0]&lt; = 127)   返回(A);

else if(parts[0] >= 128 && parts[0] <= 191)
    return (B);
else if(parts[0] >= 192 && parts[0] <= 223)
    return (C);
else if(parts[0] >= 224 && parts[0] <= 255)
    return (D);

}