variable an klasse übergeben

3dsmaxer

Erfahrenes Mitglied
hallo

ich habe folgendes geschrieben:

PHP:
public class Feld {
   int felderanzahl;
   int[] instanzvariable = new int[felderanzahl]; 

public int[] initzufall ()
   {
       Random generator = new Random (12345);
       for (int i=0; i<felderanzahl; i++)
       {   
           int zufall = generator.nextInt();
           instanzvariable[i] = zufall;
       }
       return instanzvariable;
   }
 public Feld() {
       }

Wenn ich ein neues Objekt dieser Klasse erstelle und mit meiner Methode initialisieren will:

PHP:
public static void main(String[] args) {
        // TODO code application logic here
        
        Feld f = new Feld();
        f.felderanzahl = 10;
        f.initzufall();
    }

kommt es zu einer ArrayIndexOutOfBoundsException.

Ich sehe keinen Fehler im Code. Vielleicht kann mir einer von euch weiterhelfen.

danke
 

zerix

Hausmeister
Moderator
Hallo,

ist auch klar.
Das Array wird beim instanzieren schon angelegt. Die größe lässt sich nachher nicht mehr ändern.

Es geht so
Java:
public class Feld {
   int[] instanzvariable;

public int[] initzufall ()
   {
       Random generator = new Random (12345);
       for (int i=0; i<felderanzahl; i++)
       {   
           int zufall = generator.nextInt();
           instanzvariable[i] = zufall;
       }
       return instanzvariable;
   }
 public Feld(int felderanzahl) {
   instanzvariable =new int[felderanzahl]; 
       }

Code:
public static void main(String[] args) {
        // TODO code application logic here
        
        Feld f = new Feld(10);
        f.initzufall();
    }


MFG

Sascha
 

3dsmaxer

Erfahrenes Mitglied
vielen Dank für die Antwort. Das ist natürlich klar.

aber nun muss ich noch die Länge des Arrays bestimmen, da die Varibale felderanzahl nicht in der Methode public int[] initzufall () verfügbar ist.


PHP:
public static void main(String[] args) {
        // TODO code application logic here
        
        Feld f = new Feld(10);
        
        f.initzufall();
        String ausgabe = f.ausgabe();
        System.out.println(ausgabe);
    }

PHP:
public class Feld {

int[] instanzvariable; 
   int felderanzahl;
   
   public int[] initzufall ()
   { 
       Random generator = new Random (12345);
       for (int i=0; i<felderanzahl; i++)
       {   
           int zufall = generator.nextInt();
           instanzvariable[i] = zufall;
       }
       return instanzvariable;
   }

 public String ausgabe()
   {
       String ausgabe = Arrays.toString(instanzvariable);
       return ausgabe;
   }
}

Im Array steht aber nur "null" wenn ich es ausgeben lasse...
 
Zuletzt bearbeitet:

zerix

Hausmeister
Moderator
Ich glaube du solltest dir mal die Grundlagen von Java nochmal zu Gemüte führen.

Java:
public class Feld {

int[] instanzvariable; 

public Feld(int felderanzahl) {
   instanzvariable =new int[felderanzahl];
       }
   
   public int[] initzufall ()
   { 
       Random generator = new Random (12345);
       for (int i=0; i<instanzvariable.length; i++)
       {   
           int zufall = generator.nextInt();
           instanzvariable[i] = zufall;
       }
       return instanzvariable;
   }

 public String ausgabe()
   {
       String ausgabe = Arrays.toString(instanzvariable);
       return ausgabe;
   }
}

MFG

Sascha
 

3dsmaxer

Erfahrenes Mitglied
Vielen Danke für die Anwort. Jetzt klappt alles.

Der einzige Fehler war, dass ich auf die Variable felderanzahl für die for-scheife zugreifen wollte.
Ich werde mir mal die Grundlagen anschauen.