Java 返回字符的问题

Java 返回字符的问题,java,if-statement,methods,char,return-type,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)

我不明白为什么会出现一个错误,说明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);
}
私有字符A、B、C、D;
公共字符分类(){

if(parts[0]>=0&&parts[0]=128&&parts[0]=192&&parts[0]=224&&parts[0]需要else语句或默认返回语句

需要else语句或默认返回语句

当所有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)
}
私有字符A、B、C、D;
公共字符分类(){

if(parts[0]>=0&&parts[0]=128&&parts[0]=192&&parts[0]=224&&parts[0]当所有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)
}
私有字符A、B、C、D;
公共字符分类(){

如果(parts[0]>=0&&parts[0]=128&&parts[0]=192&&parts[0]=224&&parts[0]您已将每个
return
语句放入
if
语句中

当您将所有
return
语句放入
if
条件中时(即使函数肯定要返回所提到的类型),编译器没有足够的智能来确定您从函数返回的内容

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

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

您已将每个
return
语句放入
if
语句中

当您将所有
return
语句放入
if
条件中时(即使函数肯定要返回所提到的类型),编译器没有足够的智能来确定您从函数返回的内容

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

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

根据if条件返回字符a、b、c、d,但在某些条件下,如果所有条件都为false(例如部分[0]>255或部分[0]=0&&parts[0]=128&&parts[0]=192&&parts[0]=224&&parts[0]根据if条件返回字符a、b、c、d,但在某些条件下,如果所有条件都为false(例如部分[0])>255或零件[0]=0&&parts[0]=128&&parts[0]=192&&parts[0]=224&&parts[0]这需要更多的解释才能成为一个好答案。这需要更多的解释才能成为一个好答案。这是因为您所有的返回语句都是有条件的。如果所有条件都为false,则方法将在不返回任何内容的情况下到达结尾。您需要一个“默认”
return
语句,或者如果是
>case
不应该出现在您的程序中,您应该
抛出
一个
[运行时]异常
。请参阅。这是因为您所有的返回语句都是有条件的。如果所有条件都为false,则方法将到达末尾而不返回任何内容。您需要一个“默认”的
返回
语句,或者如果
案例
不应该出现在您的程序中,则应该
抛出
一个
[运行时]异常
。请参阅。这无关紧要,即使您在每个
if
语句中放入
true
(如
if(true)
),编译器也会抱怨。因此解释不是100%正确。与其使用默认的
return
语句,不如使用
抛出新的SomeException()如果那部分代码中的状态是非法的,则应考虑使用
。//顺便说一句,
else
有助于冗长,但也可以省略。即使在每个
if
语句中都使用
true
(as
if(true)
,也无所谓,编译器会抱怨。因此解释不是100%正确。如果在代码的该部分出现非法状态,
throw new SomeException()
,则应该考虑使用
throw new SomeException()
,而不是默认的
return
语句。//顺便说一句,
else
有助于避免冗长,但也可以省略。