I have been working on this basic java program when I need to store 5 user entered values into an array, send it to a method, and find and display the lowest value.
The program is simple enough, and it runs, but when I enter the last number, I get the error:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4 at minNumber.main(minNumber:14)
Help?
import java.util.*;
class minNumber {
public static void main(String args[]){
Scanner input = new Scanner(System.in);
int numberArray[] = new int[4];
int findLowest;
for (int i = 0; i <= numberArray.length; i++){
System.out.println("Enter a value for slot "+(i+1)+ ":");
numberArray[i] = input.nextInt();
}
findLowest = getMin(numberArray);
displayOutput(findLowest);
}
public static int getMin(int num[]){
int lowestNum = 0;
for (int j = 0; j <= num.length; j++){
if (num[j] < num[j+1]){
lowestNum = num[j];
}
}
return lowestNum;
}
public static void displayOutput(int lowest){
System.out.println("The lowest number is: "+lowest);
}
}
<= numberArray.length
should become< numberArray.length
since arrays are 0 indexed.
Remove the = in both loop.
and
First, if you want 5 values in an array, then declare it with 5:
Second, you are going off the end of the array. Change
to
You'll need to change your other
j
for
loop this way also.As an aside, your
getMin
method needs another change besides the change I mentioned above, because sayingnum[j+1]
will still run off the end of the array even if you make the change above. I think you'll need to compare the current array element versuslowestNum
, not the next array element.