我是Java新手,正在嘗試構建一個DotCom遊戲。然而,約1/5的我運行這個程序的時間(估計值),這個錯誤顯示出來:Java DotCom遊戲有大約1/5的錯誤信息
異常線程「main」 java.lang.IndexOutOfBoundsException:指數 63出界外的長度49在 java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64) 在 java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70) 在 的java .base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248) at java.base/java.util.Objects.checkIndex(Objects.java:372)at java.base/java.util.ArrayList .get(ArrayList.java:439)at AdvancedDotCom.startGame(AdvancedDotCom.java:12)在 AdvDotComLauncher.main(AdvDotComLauncher.java:23)
下面的代碼: LAUNCHER
import java.util.ArrayList;
import java.util.Scanner;
public class AdvDotComLauncher {
public static void main(String[] args) {
int myInt = 0;
boolean wrong = false;
System.out.println("Welcome! Please enter a number between 7 and 25. That will be your arena size.");
do {
Scanner scanner = new Scanner(System.in);
myInt = scanner.nextInt();
if (myInt < 7 || myInt > 25) {
wrong = true;
System.out.println("Please enter a number between 7 and 25.");
}
else {
wrong = false;
}
} while(wrong == true);
AdvDotComTable dotComTable = new AdvDotComTable();
AdvancedDotCom dotCom = new AdvancedDotCom();
ArrayList<String> table = dotComTable.createTable(myInt);
dotCom.startGame(table, myInt);
}
}
表類
import java.util.ArrayList;
public class AdvDotComTable {
public ArrayList<String> createTable(int size) {
//Used to add the right amount elements to the Array
int done = size * size;
//Used for A0, A1, A2, B0, etc.
int number = 0;
//Used to tell when to increase the letter
int size2 = size;
//Used to tell which letter we're on by index
int index = 0;
ArrayList<String> table = new ArrayList<String>();
char[] letters = "ABCDEFGHIJKLMNOPJRSTUVWXYZ".toCharArray();
while (done > 0) {
if (size2 == 0) {
size2 = size;
index++;
number = 0;
}
table.add("" + letters[index] + number);
number++;
done--;
size2--;
}
return table;
}
}
D OTCOM CLASS
import java.util.ArrayList;
import java.util.Random;
public class AdvancedDotCom {
public void startGame(ArrayList<String> table, int size) {
Random random = new Random();
char[] letters = "ABCDEFGHIJKLMNOPJRSTUVWXYZ".toCharArray();
int chooseLetter = random.nextInt(letters[size]);
int chooseNumber = random.nextInt(size - 3);
char grabLetterFromTable = table.get(chooseLetter).charAt(0);
int grabNumberFromTable = Character.getNumericValue((table.get(chooseLetter).charAt(1)));
System.out.print("You have to guess " + grabLetterFromTable + grabNumberFromTable + ", ");
System.out.print("" + grabLetterFromTable + (grabNumberFromTable + 1) + ", and ");
System.out.print("" + grabLetterFromTable + (grabNumberFromTable + 2));
}
}
我不知道什麼是造成這個問題。我是Java新手,所以這可能是一個新的錯誤:無論如何,任何幫助,我可以得到這個問題將不勝感激。
調試它。例外情況很明顯。我們不是免費的調試服務。 – John3136
嘗試調試它,如果你至少不能突出顯示相關的代碼行,你的面臨這個問題 – Nilabja