kann mir jemand weiterhelfen, wo liegen die Fehler?

Status
Nicht offen für weitere Antworten.
Java:
import java.awt.*;

public class Car {
	String make;
	Point doorArr[];
	
	
	Car(String m, int a){
		make = m;
		Point doorArr[] = new Point[a];
		for (int i = 0; i<=3; i++){
			doorArr[i] = new Point(1,1);
			
			//System.out.println("debug");
		}
	}
	
		public static void main (String args[]){
			Car autos[] = new Car[3];
			int tueren = 0;
		
			autos[0] = new Car("Ferarri", 2);
			autos[1] = new Car("Opel", 4);
			autos[2] = new Car("Ford", 4);
			
			for (int i = 0; i<=2; i++ ){
				tueren = tueren + autos[i].doorArr.length;
			}
			System.out.println("Alle Tueren: " + tueren);
			
		}
}

Fehlermeldung:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at Car.<init>(Car.java:12)
at Car.main(Car.java:22)
 
Der Fehler geschieht beim Ferrari:

Du sagst er soll 2 Türen haben, also bei dem Point Array
dann von 0 bis 1 = 2 Felder.

Die Schleife läuft aber von 0 bis 2,
also sagt er dann beim dritten Durchlauf
Array out of Bounds, weil bei einem Array mit der Länge
2 kein Feld Nr.2 gibt (sondern nur Felder Nr.0 bis 1)

mfg BRoll
 
Generell machst du immer den unschönen Fehler die Arrays über eine Schleife mit fixer Iterationsanzahl zu füllen.
Java:
for (int i = 0; i<=2; i++ ){
                tueren = tueren + autos[i].doorArr.length;
            }
Das geht auch so :

Java:
for (int i = 0; i< autos.length; i++ ){
                tueren = tueren + autos[i].doorArr.length;
            }

Die OBE, die du hast wird hier geworfen:
Java:
Point doorArr[] = new Point[a];
        for (int i = 0; i<=3; i++){
            doorArr[i] = new Point(1,1);

Schöner wäre:

Java:
Point doorArr[] = new Point[a];
        for (int i = 0; i < a; i++){
            doorArr[i] = new Point(1,1);
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben