Reputation: 39
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;
}
Why do I keep getting the error that the method must return type int. What is wrong with this function? It should return an int in every possible scenario right?
Upvotes: 4
Views: 269
Reputation: 3556
If your return type is int, any how your method must return an int.
In this case inside your outer if else
, you still have if
blocks, means if, inside the outer if else
, if non if the condition is satisfied, then it ll return nothing.
In this case, you should always add a return statement at the end.
Like this :
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;
}
Upvotes: 0
Reputation: 85799
There are two paths that are not covered:
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;
}
Solution: declare a variable with the defaut return value and assign the value properly:
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;
}
Upvotes: 6