我不明白为什么我收到错误声明方法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);
}
答案 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);
}