Frage zu einem Array

AribusFan20

Mitglied
Hallo Community

Zurzeit lerne ich wie man einen Array Schreibt und komme bei einem Programm nicht weiter.

Ich schreibe gerade ein Autohaus. In dem Man ein Auto erstellen kann und es in einem Autohaus(Array) legen kann.

Java:
public class Auto{

  private String name;
  public Auto(String name){
  this.name = name;
  }
}

das ist das Auto


Java:
import java.util.ArrayList;
public class Autohaus{
 
  public static void Autohaus(String[] args){
  ArrayList<String> Platz = new ArrayList<String>();
 
  Platz.add("BMW3er");
 
  for(String ausgabe : Platz)
  {
  System.out.println(ausgabe);
  }
  }

  public void AutohausShow() {


  }
  }

Wie ihr sehen könnt habe ich bereits im Autohaus ein Auto geaddet. Dies diente nur als Test, denn eigentlich sollte das Auto von mir separat erstellet werden und sobald es erstellt ist automatisch oder manuell in den Array kommen. Das ist das erste Problem was ich nicht verstehe, da die Methode die ich geschrieben hat nicht funktioniert

Java:
  public void Autoparken(Auto Auto) {

  Platz.add(Auto);
  }


Das Zweite Problem: Eigentlich ich die Ausgabe, also welches Auto gerade da ist(das mit For) in einer seperaten Void Methode schreiben, aber wenn ich das mache also so:

Java:
  public void AutosZeigen() {
  for(String ausgabe : Platz)
  {
  System.out.println(ausgabe);
  }
  }

kommt der Fehler cannot Find Symbol - variable Platz.

Ich würde mich über jeden Lösungsweg bzw Hilfestellung freuen.

PS: Ich schreibe mit Bluej.
 
Zuletzt bearbeitet von einem Moderator:
public static void Autohaus(String[] args){
ArrayList<String> Platz = new ArrayList<String>();

Platz.add("BMW3er");

Glaube da hast du was mit
Java:
public static void main(String[] args) {
      // Anwendung initialisieren ......
}

vermischt.

Deine Klasse AutoHaus sollte eher nen normalen Konstruktor haben, sowas wie

Java:
public class AutoHaus {

private List<Auto> platz;

public AutoHaus() {
  this.platz = new ArrayList<Auto>();
}

// weitere Methoden die auf platz zugreifen hierhin
}

sonst ist platz keine Variable deiner Instanz und damit auch in den Methoden nicht verfügbar.

Dann machst in Deiner Hauptklasse in der:

Java:
public static void main(String[] args) {

AutoHaus autoHaus = new Autohaus();
// methoden hier
// z.B. autoHaus.autoParken(new Auto("BMW 320"));
// autoHaus.show();
}

und kleine bitte: Variablen besser mit kleinen buchstaben beginnen und code über -> code einfügen
plazieren, dann ist einfacher zu lesen.
 
Schau mal meine Signatur! Was möchtest du genau haben???? Bin heute gut drauf, ich schreibe dir dein Autohaus. 🙂
 
Ich glaube, du verwechselst da was: List ist eine Klasse. Und du brauchst eine Main-Methode als Einstiegspunkt. Entweder in einer eigenen Klasse oder in einer deiner Klasse, wobei ich es in einer eigenen Klasse machen würde..
Java:
public class Main {
    public static void main(String[] args){
        //code
    }
}
 
Mit was Entwickelst du, mit ner IDE (Eclipse, InteliJ, Netbeans) oder mit Texteditor?

Du musst alle Klassen die Du benutzt auch importieren. Per IDE über Shortcut, im Editor musst dir die Sachen in der Javadoc raussuchen. Wenn du einfach Code in deine IDE kopierst musst die imports nachträglich machen.

Respekt davor dich so in Java reinzufuchsen, aber vieleicht gehst noch mal ein, zwei Schritte zurück für die OO-Basics.

Ansonsten machst drei Klassen

1) Auto
2) Autohaus
3) AutoHausApp

Java:
public class Auto {
    private String name;

    public Auto(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
  
  
}


Java:
import java.util.ArrayList;
import java.util.List;

public class AutoHaus {
    List<Auto> platz;
  
    public AutoHaus() {
        platz = new ArrayList<Auto>();
    }
  
    public void autoParken(Auto auto) {
        platz.add(auto);
    }
  
  
    public void showAutos() {
        for (Auto auto : platz) {
            System.out.println(auto.getName());
        }
    }
  
}


Java:
public class AutoHausApp {

   public static void main(String[] args) {
     AutoHaus autoHaus = new AutoHaus();
     autoHaus.autoParken(new Auto("BMW 320"));
     autoHaus.showAutos();
   }
}

Deine ausführbare (start)Klasse ist dann AutoHausApp
 
Mit was Entwickelst du, mit ner IDE (Eclipse, InteliJ, Netbeans) oder mit Texteditor?

Du musst alle Klassen die Du benutzt auch importieren. Per IDE über Shortcut, im Editor musst dir die Sachen in der Javadoc raussuchen. Wenn du einfach Code in deine IDE kopierst musst die imports nachträglich machen.

Respekt davor dich so in Java reinzufuchsen, aber vieleicht gehst noch mal ein, zwei Schritte zurück für die OO-Basics.

Ansonsten machst drei Klassen

1) Auto
2) Autohaus
3) AutoHausApp

Java:
public class Auto {
    private String name;

    public Auto(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
 
 
}


Java:
import java.util.ArrayList;
import java.util.List;

public class AutoHaus {
    List<Auto> platz;
 
    public AutoHaus() {
        platz = new ArrayList<Auto>();
    }
 
    public void autoParken(Auto auto) {
        platz.add(auto);
    }
 
 
    public void showAutos() {
        for (Auto auto : platz) {
            System.out.println(auto.getName());
        }
    }
 
}


Java:
public class AutoHausApp {

   public static void main(String[] args) {
     AutoHaus autoHaus = new AutoHaus();
     autoHaus.autoParken(new Auto("BMW 320"));
     autoHaus.showAutos();
   }
}

Deine ausführbare (start)Klasse ist dann AutoHausApp


Danke für die Erklärungen und das Beispiel bzw die Musterlösung
 
Mit was Entwickelst du, mit ner IDE (Eclipse, InteliJ, Netbeans) oder mit Texteditor?

Du musst alle Klassen die Du benutzt auch importieren. Per IDE über Shortcut, im Editor musst dir die Sachen in der Javadoc raussuchen. Wenn du einfach Code in deine IDE kopierst musst die imports nachträglich machen.

Respekt davor dich so in Java reinzufuchsen, aber vieleicht gehst noch mal ein, zwei Schritte zurück für die OO-Basics.

Ansonsten machst drei Klassen

1) Auto
2) Autohaus
3) AutoHausApp

Java:
public class Auto {
    private String name;

    public Auto(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
 
 
}


Java:
import java.util.ArrayList;
import java.util.List;

public class AutoHaus {
    List<Auto> platz;
 
    public AutoHaus() {
        platz = new ArrayList<Auto>();
    }
 
    public void autoParken(Auto auto) {
        platz.add(auto);
    }
 
 
    public void showAutos() {
        for (Auto auto : platz) {
            System.out.println(auto.getName());
        }
    }
 
}


Java:
public class AutoHausApp {

   public static void main(String[] args) {
     AutoHaus autoHaus = new AutoHaus();
     autoHaus.autoParken(new Auto("BMW 320"));
     autoHaus.showAutos();
   }
}

Deine ausführbare (start)Klasse ist dann AutoHausApp

Ich habe noch ein paar Fragen zu deiner Musterlösung
1: Warum muss man getName und setName in der Klasse Auto schreiben welchen zusammenhang gibt es da?
2: Warum brauch man auf jeden Fall eine Main? Bzw braucht überhaupt auf jeden Fall eine Main?
Zu 2:

Ich habe das was ich geschrieben habe nochmal umgeschrieben.
Code:
public class Auto{

    private String name;
    public Auto(String Name){
        name = Name;
    }
}

Code:
import java.util.ArrayList;
import java.awt.*;

public class Autohaus{
    ArrayList<Auto> platz = new ArrayList<Auto>();
    public void Autohinzufügen(Auto auto){
        platz.add(auto);

   }
  
   public void Autoshow(){
       for(Auto ausgabe : platz)
        {
            System.out.println(ausgabe);
        }
    }
}

Soweit ich das überblicken kann hat das funktioniert bis auf die Ausgabe, da steht im Terminal statt zb Ford Focus sowas: "Auto@dba05a". Weißt du eventuell warum?
 

Neue Themen


Zurück
Oben