public int computeStyle(String season) {
if(season.equals("summer")){
if (this.style.equals("toque")){
return 8;
}
if (this.style.equals("sun visor")){
return 1;
}
if (this.style.equals("fedora")){
return 6;
}
}
else if(season.equals("winter")){
if (this.style.equals("toque")){
return 1;
}
if (this.style.equals("sun visor")){
return 8;
}
if (this.style.equals("fedora")){
return 7;
}
}
else return 5;
}
为什么我一直收到方法必须返回int类型的错误。这个功能有什么问题?它应该在每个可能的场景中返回一个int吗?
答案 0 :(得分:6)
有两条未涵盖的路径:
public int computeStyle(String season) {
if(season.equals("summer")){
if (this.style.equals("toque")){
return 8;
}
if (this.style.equals("sun visor")){
return 1;
}
if (this.style.equals("fedora")){
return 6;
}
//here
}
else if(season.equals("winter")){
if (this.style.equals("toque")){
return 1;
}
if (this.style.equals("sun visor")){
return 8;
}
if (this.style.equals("fedora")){
return 7;
}
//here
}
else return 5;
}
解决方案:使用defaut返回值声明变量并正确分配值:
public int computeStyle(String season) {
int result = 5;
if(season.equals("summer")){
if (this.style.equals("toque")){
result = 8;
}
if (this.style.equals("sun visor")){
result = 1;
}
if (this.style.equals("fedora")){
result = 6;
}
}
else if(season.equals("winter")){
if (this.style.equals("toque")){
result = 1;
}
if (this.style.equals("sun visor")){
result = 8;
}
if (this.style.equals("fedora")){
result = 7;
}
}
return result;
}
答案 1 :(得分:0)
如果你的返回类型是int,那么你的方法必须返回int。
在这种情况下,在您的外部if else
内,您仍然拥有if
块,意味着如果在外部if else
内,如果条件满足则为非,那么它将不会返回任何内容
在这种情况下,您应该始终在最后添加一个return语句。
像这样:
public int computeStyle(String season) {
if(season.equals("summer")){
if (this.style.equals("toque")){
return 8;
}
if (this.style.equals("sun visor")){
return 1;
}
if (this.style.equals("fedora")){
return 6;
}
}
else if(season.equals("winter")){
if (this.style.equals("toque")){
return 1;
}
if (this.style.equals("sun visor")){
return 8;
}
if (this.style.equals("fedora")){
return 7;
}
}
else return 5;
// If everything fails, then it ll return 0 at least
return 0;
}