So I’ve been practicing my Java programming skills on the CodingBat website, when I came across this problem. In it, you have to make a simple method that takes in an array of integers of dynamic length, check to see if the elements in the array are in increasing order (1, 2, 3, 15678, etc), and return “true” if true, or “false” if there is an integer out of order.
Firstly, I initialize a boolean variable named “result”. Then, I iterate through the array of integers passed by the method. If the current index value is less than the next index value, I set “result” to “true”, and repeat the loop. Else, I’ll set “result” to “false”, break out of the loop and set “result” to “false”. After the FOR loop, I return “result”.
However, I’ve been receiving an error message that “result” has not been initialized properly. I can kinda understand the confusing with the JVM, however I thought that setting the value for “result” inside of the IF/ELSE statements would solve that.
Here is a copy of the code that I have done so far:
public boolean scoresIncreasing(int[] scores) {
boolean result;
for (int i = 0; i < scores.length; i++) {
if (i < (i + 1)) {
result = true;
}
else {
result = false;
break;
}
}
return result;
}
First of all, i < i+1 will always be true, unless i = Integer.maxValue, in which case you’ll wrap around to Integer.minValue.
What you want is scores[i] < scores[i+1] , and you’ll need to adjust your loop values to avoid an index out of bounds on the last iteration.
So, your code fixed:
Try this as an alternative. It works on the principle that once you get a false, you can get out immediately.
Of course, you may want to introduce bounds checking at the beginning to ensure that there are at least two values.