Wir versuchen, ein Spielbrett mit Kacheln (10 x 10) zu erstellen. Wenn wir die Klasse jedoch unten ausführen, erhalten wir weiterhin eine ArrayIndexOutOfBoundsException. Wenn diese Klasse auf einem anderen Gerät ausgeführt wird, wird dieser Fehler aus bestimmten Gründen nicht angegeben.Ausnahme im Thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 100
Board.java
public class Board extends JComponent {
public Board() {
}
public static String[] gameElements = new String[100];
String[][] Map = new String[10][10];
int positionX = 50;
int positionY = 50;
int i = 0;
String currentLevel = "1";
@Override
public void paintComponent(Graphics g) {
loadLevel();
for (int y = 0; y < Map.length; y++) {
for (int x = 0; x < Map.length; x++) {
new Tile(x, y).paintComponent(g);
Map[y][x] = gameElements[i];
g.drawString(Map[y][x], positionY, positionX);
positionY = positionY + 50;
System.out.print("[" + Map[y][x] + "]");
i++;
}
positionY = 50;
positionX = positionX + 50;
System.out.println();
}
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(600, 600);
frame.setTitle("SleutelBarricade");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JComponent chart = new Board();
frame.add(chart);
frame.setVisible(true);
}
public void readTextFile(String fileName) {
try {
FileReader fileReader = new FileReader(fileName + ".txt");
BufferedReader buffer = new BufferedReader(fileReader);
String splitBy = ",";
String line = buffer.readLine();
for (int i = 0; i < gameElements.length; i++) {
gameElements = line.split(splitBy);
}
} catch (FileNotFoundException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void loadLevel() {
readTextFile(currentLevel);
}
}
Ein Teil der Ausnahme:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 100
at Main.GameBoard.Board.paintComponent(Board.java:45)
at javax.swing.JComponent.paint(JComponent.java:1056)
at javax.swing.JComponent.paintChildren(JComponent.java:889)
at javax.swing.JComponent.paint(JComponent.java:1065)
at javax.swing.JComponent.paintChildren(JComponent.java:889)
at javax.swing.JComponent.paint(JComponent.java:1065)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:586)
at javax.swing.JComponent.paintChildren(JComponent.java:889)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5217)
Sie setzen i nicht auf 0 zurück. Tun Sie dies am Anfang von paintComponent, bevor Sie die verschachtelte Schleife starten. – MichaelK