Car Array

kann mir jemand helfen, wo liegen die Fehler?

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)
 
Zuletzt bearbeitet von einem Moderator:
a hat den Wert zwei, deine Schleife läuft aber bis i=3. Mach aus der Bedingung
Code:
i < doorArr.length
.
 
Neben dem was EikeB geschrieben hat, solltest du doorArr nur einmal deklarieren, sonst kommt sofort der nächste Fehler.
 
hab ich gemacht, der Fehler ist mir jetzt auch klar aber einer muss sich immer noch darin verstecken. Das ganze sieht jetzt so aus:

[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<doorArr.length; i++){
doorArr = new Point();

}
}

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<3; i++ ){
tueren = tueren + autos.doorArr.length;
}
System.out.println("Alle Tueren: " + tueren);

}
}
[/code]

jetzige Fehlermeldung:
Exception in thread "main" java.lang.NullPointerException
at Car.main(Car.java:28)

Und zur klasse Point darin, das ergibt keinen Sinn, es ist zu reinen Übungszwecken für eine Klausur. Die Points wären eigentlich eine eigene Klasse Door aber ich wollte eigentlich nur mal schnell testen, ob ich das ganze programmieren kann. Und wollte nicht erst eine Klasse Door schreiben das würde es für mich noch weiter verkomplizieren.
 
Nochmal meine Frage, was soll die Klasse Point?

Du legst anstelle der Anzahl von Türen, ein Array an, das so lang ist, wie ein Auto Türen hat und befüllst das dann auch noch mit Objekten die völlig sinnlos sind.

Steh ICH aufm Schlauch oder ist das total Banane? Wenn du dir die Hausnummer 20 merken willst bindest du dir doch nicht 20 Armbänder um den Arm sondern schreibst dir 20 aufn Zettel.
 
Nochmal meine Frage, was soll die Klasse Point?

Du legst anstelle der Anzahl von Türen, ein Array an, das so lang ist, wie ein Auto Türen hat und befüllst das dann auch noch mit Objekten die völlig sinnlos sind.

Steh ICH aufm Schlauch oder ist das total Banane?

Der Fruchtgehalt der Erklärung - die bereits in Beitrag #5 gegeben wurde - hält sich in Grenzen; hat also mit Bananen nichts zu tun.

Und zur klasse Point darin, das ergibt keinen Sinn, es ist zu reinen Übungszwecken für eine Klausur. Die Points wären eigentlich eine eigene Klasse Door aber ich wollte eigentlich nur mal schnell testen, ob ich das ganze programmieren kann. Und wollte nicht erst eine Klasse Door schreiben das würde es für mich noch weiter verkomplizieren.
 
Hier droht der selbe Fehler nochmal.

[JAVA=28]
for (int i = 0; i<3; i++ ){
tueren = tueren + autos.doorArr.length;
}
[/code]

Du schreibst
Code:
i<3
, ohne die Garantie zu haben, dass '3' korrekt ist.

Gewöhn dir an:
[*] entweder mit Konstanten
Code:
MAXCAR=3;
[*] oder
Code:
i<autos.lentgh
 

Neue Themen


Zurück
Oben