【发布时间】:2026-02-13 06:55:02
【问题描述】:
我是 Java 新手,正在尝试构建一个 DotCom 游戏。但是,在我运行这个程序的大约 1/5(估计)时间里,会出现这个错误:
线程“主”java.lang.IndexOutOfBoundsException 中的异常:索引 长度为 49 的 63 次出界 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) 在 java.base/java.util.Objects.checkIndex(Objects.java:372) 在 java.base/java.util.ArrayList.get(ArrayList.java:439) 在 AdvancedDotCom.startGame(AdvancedDotCom.java:12) 在 AdvDotComLauncher.main(AdvDotComLauncher.java:23)
代码如下: 发射器
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;
}
}
DOTCOM 类
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 新手,所以这可能是一个新错误 :P 无论如何,如果我能在这个主题上获得任何帮助,我们将不胜感激。
【问题讨论】:
-
调试它。例外很明显。我们不是免费的调试服务。
-
尝试调试它,如果失败,至少突出显示您面临此问题的相关代码行