public static int gShelterSize;
public static void main (String[] args){
Scanner s = new Scanner(System.in);
System.out.println("UTSA - Spring2022 - CS1083 - Section 004 - Project 2 - TexasShelter - written by Reid Boulet");
System.out.print("Please, enter the number of dogs in the shelter (Max 100): ");
gShelterSize = s.nextInt();
mainMenu();
}
public static double[] gWeight = new double[gShelterSize];
public static void assignModifyDog(double gWeight[], int gShelterSize){
Scanner s = new Scanner(System.in);
System.out.print("Enter the current index(0 to " gShelterSize ") : ");
int index = 0;
index = s.nextInt();
System.out.println("The current weight of the dog at " index " is : " gWeight[index]);
System.out.print("Enter the weight of the new dog (0.00 - 100.00) : ");
double currentWeight = s.nextDouble();
if(0 < currentWeight && currentWeight <= 100){
currentWeight = gWeight[index];
}else{
System.out.println("Value out of range, please, try again.");
assignModifyDog(gWeight,gShelterSize);
}
}
Whenever I compile and run the program it gives me a bunch of errors whenever it reaches gWeight[index] in the println
Errors:
java.lang.ArrayIndexOutOfBoundsException: 3
at testProject2.assignModifyDog(testProject2.java:66)
at testProject2.mainMenu(testProject2.java:30)
at testProject2.main(testProject2.java:10)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)
CodePudding user response:
You don't have the implementation of the mainMenu() method, so I can only guess at the contents of it. Assuming that the gWeight array and the gShelterSize variable are the static variables that you've defined, here's the problem: the gShelterSize is initialised to 0 until it's assigned in the main() method. The gWeight array is thus initialised to a zero-length array. Although it's defined after the main() method, it is initialised before the main() method runs. So unless it's being assigned somewhere else, it will always be a zero-length array, and gWeight[x] will throw an ArrayIndexOutOfBoundsException for any value of x, even 0.
CodePudding user response:
what is 'mainMenu()' method. use num-1(when ever work with array because array always atart with 0 index) for avoid 'ArrayIndexOutOfBoundsException' error
