有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

返回字符时出现的java问题

我不明白为什么会出现一个错误,说明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) 个答案

  1. # 1 楼答案

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

    当你把所有的return语句放在if条件中(即使函数肯定会返回所提到的类型)时,编译器还没有足够的智能来确定你从函数返回的是什么

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

    public char getClassification() {
        if(true) return 'a';
    }
    
  2. # 2 楼答案

    当所有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)
    }
    

    这应该行得通

  3. # 3 楼答案

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

  4. # 4 楼答案

    根据if条件返回字符a、b、c、d,但在某些条件下,如果所有条件都为false(例如部分[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';
    }

    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);
    

    }