public int compareTo(Tool b)
{
if(cost > b.cost)
return 1;
else if(cost == b.cost)
{
if(name.compareTo(b.name) < 0)
return 1;
else if(name.compareTo(b.name) == 0)
return 0;
else if(name.compareTo(b.name) > 0)
return -1;
}
else
return -1;
}
return -1
You don't have an else statement in your else if block. The compiler isn't smart enough to realize that <
, ==
, and >
covers all cases. Removing the if(name.compareTo(b.name) > 0)
would fix the issue.
public int compareTo(Tool b)
{
if(cost > b.cost)
return 1;
else if(cost == b.cost)
{
if(name.compareTo(b.name) < 0)
return 1;
else if(name.compareTo(b.name) == 0)
return 0;
else if(name.compareTo(b.name) > 0)
return -1;
// You need an else here
}
else
return -1;
}
It must have a return statement for every possible branch (even if you know what it doesn't - that it isn't possible).