-
Hallo,
ich habe das Problem, dass bei meinem Array in jedem Feld die gleichen Werte stecken. Habe schon danach gesucht, aber mehr als eine Vermutung, dass es an einem "static" liegt, habe ich nicht dazu gefunden.
Hier die Klasse, von der ein Array erzeugt werden soll:
Code :1 2 3 4 5 6 7 8 9
public class Field { boolean blocked=false; //nicht begehbare felder boolean barred=false; //versperrte felder int xLow; int xHigh; int yLow; int yHigh; }
Und hier die Methode (aus der Klasse Playground), mit der ich die Werte in das Array speichern will:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
public static Field[][] generateGrid() { int klength=20; Random rnd=new Random(); Field[][] pgPrivate=new Field[13][11]; Field aktField=new Field(); for(int i=0;i<=12;i++) for(int j=0;j<=10;j++) { aktField.xLow=i*klength; aktField.xHigh=(i+1)*klength; aktField.yLow=i*klength; aktField.yHigh=(i+1)*klength; if((i%2==1)&&(j%2==1)) { aktField.blocked=true; } else { //Entscheidet, ob ein Feld verbarrikadiert wird int block = Math.abs(rnd.nextInt() % 10); if (block > 3) if(((i!=0)&&(j!=0))&&(i!=0)&&(j!=1)&&(i!=1)&&(j!=0)) aktField.barred=true; } pgPrivate[i][j]=aktField; } return pgPrivate; }
Und das ist nun das Array, in dem alle Werte in jedem Feld gleich sind:
Code :1
Field[][] p=Playground.generateGrid();
Ich dachte schon, dass es vielleicht an dem aktField liegt, aber mit
bekomme ich eine NullPointerException.Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
public static Field[][] generateGrid() { int klength=20; Random rnd=new Random(); Field[][] pgPrivate=new Field[13][11]; for(int i=0;i<=12;i++) for(int j=0;j<=10;j++) { pgPrivate[i][j].xLow=i*klength; pgPrivate[i][j].xHigh=(i+1)*klength; pgPrivate[i][j].yLow=i*klength; pgPrivate[i][j].yHigh=(i+1)*klength; if((i%2==1)&&(j%2==1)) { pgPrivate[i][j].blocked=true; } else { //Entscheidet, ob ein Feld verbarrikadiert wird int block = Math.abs(rnd.nextInt() % 10); //In 60% der Fälle wird Feld verbarrikadiert if (block > 3) if(((i!=0)&&(j!=0))&&(i!=0)&&(j!=1)&&(i!=1)&&(j!=0)) pgPrivate[i][j].barred=true; } } return pgPrivate; }
Schonmal vielen Dank für eure Hilfe.
MfG
-
Code java:
1
pgPrivate[i][j] = new Field();
fehlt dir. Daher steht in dem Array an Position i/j nichts drin, und du bekommst eine NullPointerException beim Zugriff.
Problem an der oberen Lösung ist wiederum, dass du dir nur ein aktField VOR den Schleifen angelegt hast. Damit hast du nur ein Objekt welches du immer wieder veränderst und an die unterschiedlichen Stellen im Array schreibst. Du hast nicht nur die gleichen Werte, sondern die selben.
-
Hey,
vielen Dank für deine Antwort.
Ich dachte eigentlich, dass ich das schon probiert hatte - aber da war wohl irgendwas falsch.
Jetzt geht es auf jeden Fall, vielen Dank!!
Ähnliche Themen
-
Sätze mit gleichen Werten finden und andere Ausschliessen
Von xrax im Forum Relationale DatenbanksystemeAntworten: 6Letzter Beitrag: 20.09.10, 13:13 -
Array nach gleichen Werten durchsuchen, aber nicht löschen!
Von nero_85 im Forum PHPAntworten: 3Letzter Beitrag: 05.12.07, 04:56 -
Übergabe von Werten auf anderes Formular der gleichen Seite
Von Punicer im Forum HTML & XHTMLAntworten: 2Letzter Beitrag: 19.07.05, 11:53 -
Datensätze mit gleichen werten werden nicht gespeichert
Von die-muecke im Forum Relationale DatenbanksystemeAntworten: 4Letzter Beitrag: 10.08.04, 20:47 -
Zwei-Tabellen, aber mit gleichen Werten
Von Feldhofe im Forum PHPAntworten: 8Letzter Beitrag: 28.06.02, 15:28



1Danke

Zitieren

Login





