私はJavaを使い始めていて、DotComゲームを構築しようとしています。しかし、およそ1/5(推定)私はこのプログラムを実行する時の、このエラーが現れます:スレッド「メイン」java.lang.IndexOutOfBoundsExceptionでJava DotComのゲームで、約1/5のエラーメッセージが表示される
例外:インデックス 63範囲外の長さを49 のjavaで java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70) で java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)で.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 AdvDotComLauncher.main(AdvDotComLauncher.java:23)
でAdvancedDotCom.startGame(AdvancedDotCom.java:12)ここでコードは次のとおりです。 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その他のクラス
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とにかく、私がこのテーマに取り組むことができたら助けてください。
デバッグしてください。例外は明らかです。私たちは無料のデバッグサービスではありません。 – John3136
あなたが少なくともこの問題に直面しているコードの関連する行をハイライト表示するのに失敗した場合は、デバッグを試みてください。 – Nilabja