Als ich diesen Code getestet habe, gab es mir java.lang.ArrayIndexOutOfBoundsException: 2 Der Code ist noch nicht fertig, aber das ist, was ich versuche zu tun: Ein Programm, das den Benutzer nach zwei Zahlen fragt. Drucken Sie alle Zahlen von der kleineren Nummer zu der größeren Zahl (einschließlich) in zufälliger Reihenfolge. Mit dieser Reihenfolge finden Sie die größte Summe von 2 nebeneinander liegenden Zahlen. Könnten mich einige bitte darauf hinweisen, was behoben werden muss und wie man es beheben kann? Vielen Dank.Wie überwinde ich java.lang.ArrayIndexOutOfBoundsException: 2 in diesem Code?
boolean isNum = false;
int in1 = 0;
int in2 = 0;
int size = 0;
int largestsum = 0;
while (!isNum) {
try {
System.out.print("Enter a number: ");
in1 = Integer.parseInt(in.readLine());
boolean isSame = false;
while (!isSame) {
System.out.print("Enter a number: ");
try {
in2 = Integer.parseInt(in.readLine());
if (in1 != in2) {
isSame = true;
} else {
System.out.println("Same number.");
}
} catch (NumberFormatException nfe) {
System.out.println("Not a number.");
}
}
isNum = true;
} catch (NumberFormatException nfe) { //catches error
System.out.println("Not a number."); //informs user of the error
}
}
if (in1 > in2) {
size = in1 - in2 + 1;
int[] num = new int[size];
for (int i = 0; i < size; i++) {
num[i] = in2 + i;
}
int[] order = new int[size];
boolean[] used = new boolean[size];
for (int i = 0; i < size; i++) {
int r = (int) ((size) * (Math.random()));
while (used[r]) {
r = (int) ((size) * Math.random());
}
order[i] = r; //fill array
used[r] = true; //r is now used
}
for (int i = 0; i < size; i++) {
if (num[order[i]] + num[order[i + 1]] > largestsum) {
largestsum = num[order[i]] + num[order[i + 1]];
}
}