ArrayIndexOutOfBoundsException ....

Luk10

Top Contributor
Hallo ich habe folgenden code, der sich zwar kompilieren lässt, jedoch nicht ausführen!

Java:
public abstract class Baum {
  private double hoehe;
  private String baumart;
  private static int anzahlBaum;
    public Baum () {
        hoehe = 0.5;
        baumart = "standart";
        anzahlBaum = 0;
    }
    public static void setBaumAnzahl (int b) {
        anzahlBaum = b;
    }
    public static int getBaumAnzahl () {
        return anzahlBaum;
    }
}

Java:
import java.util.Scanner;

public abstract class Obstbaum extends Baum implements Nutzbaum {
  private String obstart;
  private int anzahlObst;
    public Obstbaum () {
        super ();
        obstart = "standart";
        anzahlObst = 0;
    }
    public static void ApfelPflanzen () {
        Scanner input = new Scanner (System.in);
        System.out.println ("Wie viele Bäume möcheten sie Pflanzen?");
        setBaumAnzahl (input.nextInt());
        Baum meineBäume [] = new Baum [getBaumAnzahl ()];
        while (getBaumAnzahl () >= 0) {
            meineBäume[getBaumAnzahl ()] = new Apfel ();
            setBaumAnzahl(getBaumAnzahl () -1);
        }
    }
}

Java:
public class Apfel extends Obstbaum {
  private String apfelsorte;
    public Apfel () {
        super ();
        apfelsorte = "standart";
    }
}

was bitte ist da so riskant, als ob ich eine exception brauchen würde?

danke
 
Zuletzt bearbeitet:
>Baum meineBäume [] = new Baum [getBaumAnzahl ()];

hier machst du ein Array der länge: sagen wir mal 10

>meineBäume[getBaumAnzahl ()]

hier geifst du auf die Stelle , sagen wir 10, zu.

Ein Array der Länge x hat Elemente von 0 bis (x-1).
Sonst bist du OutOfBounds

EDIT:
Im allgemeinen sind Schleifen über globale Variablen recht gefährlich und meist auch quatsch.
Lass das get set Zeugs und mach eine lokale Variable.
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben