Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich programmiere momentan ein spiel (block challenge) das ähnlich ist wie tetris aber anstatt linien zu löschen lasse ich nur gewisse blöcke löschen. und das ist auch mein problem.
ich habe ein array erstellt wo ich dann auch die blöcke zeichnen lasse. um sie zu löschen möchte ich überprüfen ob links, recht oder unterhalb eines blockes der selbe block nochmals vorhanden ist.
code:
private int[][] board = new int[width][height];
....
for (int i = height - 1; i > 2; i--)
{
lineIsToDelete = false;
for (int j = width; j > 2; j--)
{
if (board[j] == board[j-2][i-2])
lineIsToDelete = true;
}
}
jetz wen ich dies testen möchte kommt eine fehlermeldung:
Exception in thread "AWT-EventQueue-1" java.lang.ArrayIndexOutOfBoundsException
ich kann mir das nicht erklären da ich der meinung bin das ich den bereich nicht überschreite. (programm läuft sonst fehlerfrei)
das Problem ist in Zeile
> if (board[j] == board[j-2][i-2])
?
dann trenne das erstmal auf in zwei Zeilen
wert1 = board[j];
wert2 = board[j-2][i-2]);
if (wert1 == wert2)
und schau dir an, welcher Zugriff es ist,
ich schätze mal der erste,
den kann man spaßeshalber sogar nochmal teilen:
array1 = board[j];
wert1 = array1;
und wieder kannst du durch die Fehlermeldung (Zeilennummer) erkennen, welcher der beiden Zugriffe scheitert,
in der Fehlermeldung steht dann auch bestimmt was vom Index,
alternativ kannst du es auch selber herausfinden:
System.out.println("greife gleich mit index .. auf ein Array der Länge .. zu";
array1 = board[j];
oder gar
System.out.println("greife gleich mit index .. auf ein Array der Länge .. zu");
if (index >= array.length) {
System.out.println("also sowas mach ich nicht, ich hab doch meine Ehre");
System.exit(0);
} else {
array1 = board[j];
}
für alle Arten von ArrayIndexOutOfBoundsException gilt also: es gibt keinerlei Problem festzustellen,
WO und mit WELCHEM Index das ganze passiert,
wenn das geklärt ist, kann man sich anschauen, wo der Index herkommt,
ich korrigiere jetzt mal bewußt den offensichtlichen Fehler nicht und hoffe, dass du es selbst herausfindest,
sonst hätte ich oben alles umsonst geschrieben
danke SlaterB für die genau anleitung und dir marco13 für deine hilfe. habe jetzt sonst noch ein anderes problem das ich lösen muss. melde mich vieleicht schon bald wieder!;-) see ya