Problem mit Array in Methode

  • Themenstarter Themenstarter Problemkind
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
P

Problemkind

Gast
Hallo Leute!

Also ich hab n ziemlich blödes Problem. 🙁

Ich liste euch mal den Code mit Beschreibung, vielleicht habt ihr ja ne Ahnung, was da los ist.

Code:
public class Fahrrad {

	private static int typanzahl=0;
	private static int anzahl;
	private static String typ;
	static Fahrrad [] bike = new Fahrrad[10];
	private static int index;
	

	
	
	//Fahrradtyp wird erzeugt, Eigenschaften Anzahl und Name hinzugefügt,
	//Typzahl (dient als Array-Index) wird danach um 1 erhöht, so dass
	//beim nächsten erzeugen ein neues Array-Element angesprochen wird
	public static void erzeuge()
	{
		bike[typanzahl++]= new Fahrrad();
		index = typanzahl;
		System.out.println("Fahrraderstellung");
		System.out.print("Fahrradtyp: ");
		typ = Tastaturleser.leseString();
		System.out.print("Fahrradanzahl: ");
		anzahl = Tastaturleser.leseInt();
			}
	
	//Listet alle Fahrradtypen mit Indexzahl und Anzahl auf.
	public static void liste()
	{
		for (int i=0;i<=typanzahl-1;i++)
		{
			System.out.println(bike[i].index + "    " +bike[i].typ + "    Anzahl: " +bike[i].anzahl);
		}
	}
	
	//Steuere Fahrradtyp über Indexzahl an ändere den Namen
	public static void ändere()
	{
		System.out.print("Zu veränderndes Fahrrad: ");
		int c= Tastaturleser.leseInt();
		System.out.print("Neuer Fahrradtypname: ");
		bike[c-1].typ = Tastaturleser.leseString();
		
	}
	//Steuere Fahrradtyp über Indexzahl an und überschreibe von da an
	//alle Array-Element mit den darauf folgenden, bis auf das letzte
	//(gelöst über Variable Anzahl der Typen), welches null gesetzt wird.
	public static void lösche()
	{
		System.out.print("Zu löschendes Fahrrad: ");
		int c= Tastaturleser.leseInt();
		for (int i=c;i<typanzahl;i++)
		{
			bike[i-1] = bike [i];
		}
		bike[typanzahl]=null;
			
		
	}
	
}

So und wenn ich jetzt im Hauptprogramm (neue Klasse) 3-4 mal ein Objekt der Klasse Fahrrad erstellen will, indem ich Fahrrad.erzeuge(); mehfach eingebe und das Ganze listen will, listet er mir anstatt 3-4 verschiedenen Fahrradtypen 3-4 mal das selbe. Ich bin das Programm jetzt schon mindestens 1000 mal gedanklich durchgegangen, aber ich finde den Fehler einfach net, wobei ich zugeben muss, dass ich auch noch ein Anfänger bin. Für jede Hilfe bin ich sehr dankbar.

Gruß
 
Das is halt so die Sache mit static... du schreibst in erzeuge() nur
Code:
typ = Tastaturleser.leseString();
- die eine static Variable wird dadurch verändert. Du brauchst demnach in jedem Objekt eine solche Variable.
Außerdem würde ich dir raten statt dem Array eine ArrayList zu verwenden, da diese dynamisch ist.
 
wer bringt momentan allen dieses verdammte static bei ???? grml

streich alle static's in deiner Klasse weg und freu dich dann
 
Illuvatar hat gesagt.:
Das is halt so die Sache mit static... du schreibst in erzeuge() nur
Code:
typ = Tastaturleser.leseString();
- die eine static Variable wird dadurch verändert. Du brauchst demnach in jedem Objekt eine solche Variable.
Außerdem würde ich dir raten statt dem Array eine ArrayList zu verwenden, da diese dynamisch ist.

Was macht static? Ich bin Anfänger, bitte nochma gaaanz langsam... 😀
 
static methoden & variablen sind nicht an ein Objekt gebunden, sondern Klassenspezifisch. D.h. jede Instanz der Klasse arbeitet auf den selben Methoden bzw. Variablen. Ändert eine Instanz eine static variable ist diese Änderung für alle instanzen sichtbar
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben