As far as I know, I understand this error. I know that within my program there is a situation where no conditions are met and the computer doesn't know what to do. That being said, I'm not sure how to fix it properly without breaking the current code. I've added a return 0 at the end of all the if statements, which gets rid of the error, but in some cases the 0 prints out which of course I don't want it to. I also tried putting it within an else statement at the very end as-well, but I still get the same error.
Assignment instructions are as follows: "If the two parameters are within 1 of each other, return the smaller number; Otherwise, subtract one from the larger parameter and add one to the smaller parameter and balance the result."
Here is what I have:
public static int balance (int x, int y) {
if(x == y) {
System.out.println("The values X and Y (" + x + " and " + y + ") are already balanced; They are equal to each other!");
}
else if(Math.abs(x-y) == 1) { //Checks to see if numbers are within 1 of each other (Math.abs because negative numbers don't matter in this case)
if(x > y) {
return y;
}
else return x;
}
else if(x > y) {
x = x - 1; //X is larger so we subtract
y = y + 1; //Y is smaller so we add
return balance(x,y); //Recursion happens
}
else if(x < y) {
y = y - 1; //Y is larger so we subtract
x = x + 1; //X is smaller so we add
return balance(x,y); //Recursion happens
}
}
The calculations and everything on that side seem to work exactly like the instructions are asking. I just can't seem to get rid of the "This method must return a result of type int" error without having random values that are unneeded showing up in the console.