Array wird falsch befüllt?

cptlava

Mitglied
Hey
Wir sollen Objektorientiert programmieren und das versuche ich gerade. Wir sollen ein Lager von einem Artikel mit mehreren Attributen anlegen.
Soweit auch kein Problem. Allerdings finde ich den Fehler nicht weshalb sich auf jedem Platz meines Arrays der selbe Artikel befindet.

Edit:
Nach ein paar weiteren Tests scheint es das sich das Array beim befüllen selbst überschreibt

Fachklasse Lager:
Java:
public class Lager
{
  public void anlegenArtikel(){
     lager[counter] = art1;
     counter++;
  }
 
  public void bucheZugang(int number,int value) { 
     for (int i = 0;i < counter; i++){
        art1 = lager[counter];
        if (number == art1.getNummer())  {
           art1.bucheZugang(value); 
        } 
     }
  }

  public void bucheAbgang(int number,int value) { 
     for (int i = 0;i < counter; i++){
        art1 = lager[counter];
        if (number == art1.getNummer())  {
           art1.bucheAbgang(value); 
        } 
     }
  }
 
  public void setart1(Artikel art1) {
      this.art1 = art1;
  }
 
  public Artikel art1() {
     return art1;
  }
  public Artikel[] lager() {
     return lager;
  }

  public String toString() { 
     String ausg = " hi", buffer = " "; 
     for (int i = 0;i < lager.length; i++){
        art2 = lager[i];
        buffer = "\tArtikelnummer: " + art1.getNummer() + "\n\tArtikelBezeichner: " + art1.getBezeichner()  + "\n\tArtikelBestand: " + art1.getBestand() + "\n\tArtikelpreis " + art1.getPreis() + "\n \n";
        ausg = ausg + buffer;
     }
     return ausg;
  }
 
  String[] str = new String[2];
  private int counter = 0;
  private Artikel art1,art2 = new Artikel();
  private Artikel[] lager = new Artikel[2];
}

Testklasse Lager
Java:
public class LagerTest
{
  public void start(){ 
     a1 = t1.start();
     l1.setart1(a1);
     l1.anlegenArtikel(); 
  }

  public void bestandAendern(){
     System.out.println("Nummer");
     iBuffer = input.nextInt();
     System.out.println("Menge");
     iBuffer1 = input.nextInt();
     l1.bucheZugang(iBuffer,iBuffer1);
  }
 
  public void bestandAendern1(){
     System.out.println("Nummer");
     iBuffer = input.nextInt();
     System.out.println("Menge");
     iBuffer1 = input.nextInt();
     l1.bucheAbgang(iBuffer,iBuffer1);
  }
 
  public void ausgabe(){
     String ausg = l1.toString();
     System.out.println(ausg); 
  }
 
  ArtTest t1 = new ArtTest();
     Lager l1 = new Lager();
     Artikel a1 = new Artikel();
     int iBuffer, iBuffer1;
     double dBuffer;
     String str;
     Scanner input = new Scanner(System.in);
}

Artikel Klassen
Fachklasse Artikel
Code:
public class Artikel
{
  //Buchen
  public void bucheZugang(int wert) {
     artBestand = artBestand + wert; 
  }
  public void bucheAbgang(int wert) {
     artBestand = artBestand - wert; 
  }
 
  //Set
  public void setartBestand(int artBestand) {
     this.artBestand = artBestand;
  }
  public void setartPreis(double artPreis) {
     this.artPreis = artPreis;
  }
  public void setartNummer(int artNummer) {
     this.artNummer = artNummer;
  }
  public void setartBezeichner(String artBezeichner) {
     this.artBezeichner = artBezeichner;
  }
 
  //Get
  public String getBezeichner() {
      return artBezeichner;
  }
  public int getNummer() {
      return artNummer;
  }
  public double getPreis() {
      return artPreis;
  }
  public int getBestand() {
      return artBestand;
  }
 
  //toString
  public String toString() {
     return "\tArtikelnummer: " + artNummer + "\n\tArtikelbezeichner " + artBezeichner +
     "\n\tArtikelbestand " + artBestand + "\n\tArtikelpreis " + artPreis;
  }
 
  //Variablen
  private double artPreis;
  private int artNummer, artBestand;
  private String artBezeichner;
}

Testklasse Artikel
Code:
public class ArtTest
{
  public Artikel start() { 
     System.out.println("Bestand");
     buffer = scanner.nextInt();
     a1.setartBestand(buffer);
 
     System.out.println("Nummer");
     buffer = scanner.nextInt();
     a1.setartNummer(buffer);
 
     System.out.println("Preis");
     dBuffer = scanner.nextDouble();
     a1.setartPreis(dBuffer);
 
     System.out.println("Bezeichner");
     buffer1 = scanner.next();
     a1.setartBezeichner(buffer1);
     return a1;
  }
 
  public void zugang(){
     System.out.println("Menge");
     buffer = scanner.nextInt();
     a1.bucheZugang(buffer);
  }
 
  public void abgang(){
     System.out.println("Menge");
     buffer = scanner.nextInt();
     a1.bucheAbgang(buffer);
  }
 
  public void ausgabe(){ 
     String ausg = a1.toString();
     System.out.println(ausg);
  }
 
  public static void main(String[] args){
     new ArtTest().start();
     new ArtTest().ausgabe(); 
  }

  Artikel a1 = new Artikel();
  Scanner scanner = new Scanner(System.in);
  int buffer;
  double dBuffer;
  String buffer1;
}

Im Anhang nochmal ein Bild mit der Ausgabe bei einem 2 stelligen Array.

Bin für jede Hilfe dankbar!
 

Anhänge

  • Unbenannt.png
    Unbenannt.png
    60,3 KB · Aufrufe: 27
Zuletzt bearbeitet von einem Moderator:

Bitfehler

Bekanntes Mitglied
In deiner toString von der Klasse Lager hast du eine Schleife und schreibst bei jedem Durchlauf etwas in art2. In der nächsten Zeile verwendest für die Ausgabe aber art1, der sich ja nicht ändert, sodass öfter art1 ausgeben wird.

EDIT:
Da sind noch mehr (potenzielle) Fehler in der Klasse Lager, vlt findet du die ja selber.
 
Zuletzt bearbeitet:

cptlava

Mitglied
Hatte ich schon gefunden und abgeändert, aber danke.

Problem ist auf jeden Fall nicht die Ausgabe sondern das befüllen des Arrays.
Sobald ich einen 2. artikel hinzufüge ändert sich der erste ebenfalls, ich kann mir nur nicht erklären weshalb -.-
 

Bitfehler

Bekanntes Mitglied
Guck dir mal die ersten drei Methoden deiner Klasse Lager an. ;)

Prinzipiell wäre es schöner, wenn du drei Java-Klassen haben würdest. Eine Klasse Artikel, eine Klasse Lager und eine Klasse App/Programm/wieauchimmer. Die ersten beiden Klassen bilden dann die Objekte Lager und Artikel ab und werden von der dritten Klasse verwendet. Die dritte Klasse enthält also den Ablauf.
 

cptlava

Mitglied
Die Idee Artikel und Lagertest zusammen zu fassen hört sich gut an, werd ich gleich mal umsetzen.
Allerdings verstehe ich nicht ganz was die ersten 3 Methoden mit meinem Problem zu tun haben?
Gerade da ich die Zu und Abgangsmethode noch gar nicht benutzt habe da ich das Array ja nicht befüllt bekomme
 

Bitfehler

Bekanntes Mitglied
Code:
for (int i = 0;i < counter; i++){
  art1 = lager[counter];
...
Du müsstest hier den Index verwenden und nicht einen Teil deiner Abbruchbedingung. So liest du immer den selben Artikel aus dem Lager aus.

Ich dachte eher an sowas wie unten dargestellt.
Es ist absichtlich nicht alles von deinen Methoden implementiert und verwendet eine Liste anstatt eines Arrays. Ne bisschen sollst du ja auch selber machen.

Die Klassen Artikel und Lager stellen Klassen dar, die in der App verwendet werden.

Java:
public class Artikel
{
  //Variablen
  private double artPreis;
  private int artBestand;
  private int artNummer;
  private String artBezeichner;
  public Artikel() {}
  public Artikel(double artPreis, int artBestand, int artNummer, String artBezeichner) {
      this.artPreis = artPreis;
      this.artBestand = artBestand;
      this.artNummer = artNummer;
      this.artBezeichner = artBezeichner;
  }
  //Set
  public void setartBestand(int artBestand) {
      this.artBestand = artBestand;
  }

  public void setartPreis(double artPreis) {
      this.artPreis = artPreis;
  }

  public void setartNummer(int artNummer) {
      this.artNummer = artNummer;
  }

  public void setartBezeichner(String artBezeichner) {
      this.artBezeichner = artBezeichner;
  }

  //Get
  public String getBezeichner() {
      return this.artBezeichner;
  }

  public int getNummer() {
      return this.artNummer;
  }

  public double getPreis() {
      return this.artPreis;
  }

  public int getBestand() {
      return this.artBestand;
  }

  //Achtung:Kann negativ werden
  public void updateBestand(int wert) {
      this.artBestand = this.artBestand - wert;
  }

  //toString
  public String toString() {
     return "\tArtikelnummer: " + this.artNummer + "\n\tArtikelbezeichner " + this.artBezeichner +
     "\n\tArtikelbestand " + this.artBestand + "\n\tArtikelpreis " + this.artPreis;
  }
}

Java:
public class Lager
{
    // instance variables - replace the example below with your own
    private ArrayList<Artikel> lager;

    /**
     * Konstruktor Class Lager
     */
    public Lager(){
        lager = new ArrayList<Artikel>();
    }

    /**
     *
     */
    public void anlegenArtikel(Artikel art) {
        lager.add(art);
    }

    /**
     * TODO: Siehe Anmerkung
     */
    public void updateArtBestand(int artNumber, int value) {
        //Durchlaufe Lager
        //Wenn ein Artikel die übergebene artNumber enthält,
        //rufe updateBestand aus der Klasse Artikel auf
        //Überlege, was passieren soll, wenn Artikel nicht gefunden
    }

    /**
     * public void bucheAbgang(int artNumber, int value) {}
     * wird nicht benötigt, gebe negative Zahl als Parameter in
     * updateArtBestand
     */

    /**
     * TODO; Bekommst du selber hin, hier fehlt wahrscheinlich noch was
     */
    public String toString() {
        String out = "";
        for(Artikel art : lager){
            out = out + " " + art.getBezeichner();
        }
        return out;
    }
}

Java:
public class App
{
    public static void main(String[] args) {
    
        //Lege ein Lager an
        Lager lager = new Lager();
    
        //Lege ein Artikel ins Lager
        lager.anlegenArtikel(new Artikel(10.0, 1, 1234, "Schokolade"));
    
        //Ausgabe
        System.out.println(lager.toString());
    
    }
}
 
Zuletzt bearbeitet von einem Moderator:

cptlava

Mitglied
Erstmal Danke für die Arbeit die du dir gemacht hast. Hab jetzt auch verstanden was du meintest.
Noch als letzte Frage: Gibt es einen besonderen Grund warum du "this" außerhalb des Konstruktors verwendest?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Methoden Wieso wird mein Array "a" verändert und meine Variable "a" nicht? Java Basics - Anfänger-Themen 4
sserio Zweidimensionales Array [][] wird untereinander ausgegeben Java Basics - Anfänger-Themen 14
I Programm erkennt nicht an das Array zurückgegeben wird trotz Initialisierung *einfach* Java Basics - Anfänger-Themen 9
H Array wird als Rückgabewert nicht akzeptiert? Java Basics - Anfänger-Themen 2
A char array wird überschrieben Java Basics - Anfänger-Themen 6
L Iterieren durch eine ArrayList. Integer Array wird übergeben Java Basics - Anfänger-Themen 17
NeoLexx Variable für Array wird nicht korrekt übergeben Java Basics - Anfänger-Themen 45
P Array wird automatisch überschrieben Java Basics - Anfänger-Themen 3
B Gefülltes Array wird mit nullwerten übergeben Java Basics - Anfänger-Themen 9
Bluebird209 Array wird nicht an Methode übergeben Java Basics - Anfänger-Themen 7
E Methoden 2D Array wird in der Methode nicht geändert/gespeichert Java Basics - Anfänger-Themen 5
E Wie wird in Java ein Char-Array terminiert ? Java Basics - Anfänger-Themen 15
L [Verständnisproblem] Array wird trotz void rückgabe verändert. Java Basics - Anfänger-Themen 5
D Array wird immer mir 100 für jeden Wert initialisiert? Java Basics - Anfänger-Themen 2
Silvascus Array, der mit dem Namen, der per Methode übergeben wird, erstellt wird Java Basics - Anfänger-Themen 5
T Array wird überschrieben Java Basics - Anfänger-Themen 4
J Warum wird Array durch Methode ohne Rückgabewert verändert? Java Basics - Anfänger-Themen 5
L Schleifen und Array, nur letzte Eingabe wird ausgegeben Java Basics - Anfänger-Themen 3
S Array wird nicht übernommen NullPointerException Java Basics - Anfänger-Themen 6
D Array Objekt wird überschrieben Java Basics - Anfänger-Themen 3
L Wie wird ein 2 Dimensionales Array befüllt? Java Basics - Anfänger-Themen 6
C Array Aktualisierung wird nicht im Tooltip angezeigt Java Basics - Anfänger-Themen 2
H Array wird verändert ohne Rückgabe? Java Basics - Anfänger-Themen 7
P Datentypen String auf JTextField wird zu Char-Array und anschließend zu int Java Basics - Anfänger-Themen 12
A Array wird nicht durchlaufen Java Basics - Anfänger-Themen 10
F Variablen String-Array wird ungewollt "überschreiben" Java Basics - Anfänger-Themen 7
M Array wird beim Neuaufruf nicht neu initialisiert Java Basics - Anfänger-Themen 9
D Erste Schritte Warum wird bei einem Array die Länge über Length ausgegeben? Java Basics - Anfänger-Themen 6
A Ein Array aus einer Klasse wird nicht sauber abgefüllt Java Basics - Anfänger-Themen 4
A OOP Array wird ohne grund sortiert?! Java Basics - Anfänger-Themen 4
I Array und variable gleicher wert, wird jedoch nicht erkannt Java Basics - Anfänger-Themen 4
B Array-objekte,. Es wird ein Fehler ausgegeben Java Basics - Anfänger-Themen 11
A Array wird überschrieben Java Basics - Anfänger-Themen 5
B Array von Choice wird nicht von getSelectedItem erkannt Java Basics - Anfänger-Themen 3
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
Proxy Chars vor array übergabe toLowerUpcase Java Basics - Anfänger-Themen 14
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
S array 2 dimensional treppe Java Basics - Anfänger-Themen 3
S Array 2x2 Blöcke mit 0 und 1 Java Basics - Anfänger-Themen 10
C Array von Klassen Java Basics - Anfänger-Themen 2
julian0507 2Dim-Array Spaltensummen Java Basics - Anfänger-Themen 1
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Array.list vergleichen Java Basics - Anfänger-Themen 1
W Java-Code mit Array Java Basics - Anfänger-Themen 14
D Reflections & Generisches Array Java Basics - Anfänger-Themen 4
T Array Java Basics - Anfänger-Themen 2
T Array Java Basics - Anfänger-Themen 15
T Wörteranzahl im Array zählen Java Basics - Anfänger-Themen 9
Ostkreuz Zweidimensionaler Array Index Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
D 2D Char Array into String Java Basics - Anfänger-Themen 2
J Array Median bestimmen Java Basics - Anfänger-Themen 6
S Array Maximum bestimmen mit for und foreach Java Basics - Anfänger-Themen 7
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
N Array Java Basics - Anfänger-Themen 1
J Array Mittleren Wert bestimmen Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
M 2d array ohne längen anlegen Java Basics - Anfänger-Themen 4
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
O 2 Dimensionales Array Java Basics - Anfänger-Themen 6
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
javaBoon86 Array mehrere Dimensionen Java Basics - Anfänger-Themen 10
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
B Explizit Array definieren geht nicht? Java Basics - Anfänger-Themen 14
D Kleinste Zahl in Array finden die vorher noch errechnet werden müssen. Java Basics - Anfänger-Themen 4
L Gegebenes Array sortieren, indem zufällige Zahlenpaare aus Array ausgewählt werden Java Basics - Anfänger-Themen 14
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
Temsky34 Array IndexOf nicht verfügbar Java Basics - Anfänger-Themen 18
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
E Durch Muster in Array iterieren Java Basics - Anfänger-Themen 3
L Frage zum Array Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben