Artikelbestand

JStein52

Top Contributor
Und das schreibst du jetzt mal in 4-5 Zeilen Java-Code auf und überlegst immer dabei wofür ist diese Zeile gut und tut sie wirklich das was ich wollte ?
 

Devanther

Top Contributor
Ich brauche noch paar Ratschläge mehr.
Ich habe mir das jetzt x-mal durchgelesen...bevor ich absoluten Schwachsinn poste, noch nen Tipp, bitte.


Code:
public void alleArtikelAnzeigen()
{
   for(Artikel aktuellerArtikel: lager){
    System.out.println(aktuellerArtikel.toString());
}

Das ist die for-Schleife. Kann ich aus dieser Schleife etwas übernehmen?

Code:
den Bestand holen musst
Ich muss die gibBestand() Methode von Artikel aufrufen?
 

JStein52

Top Contributor
Ja die Schleife ist doch schon mal ok. Bis auf eine fehlende }
Aber die Methode soll ja einen Parameter haben (den level) und der println ist im Prinzip auch ok aber er soll ja nicht immer gemacht werden !
 

JStein52

Top Contributor
wenn schon dann :
Code:
if (aktuellerArtikel.gibBestand() < 250) {
.....
}

aber wie kommst du auf 250 ? dieser Level soll deiner Methode als Parameter übergeben werden
 

Devanther

Top Contributor
Code:
public int level(level)
{
   Artikel a = aktuellerArtikel(level);
   for(Artikel aktuellerArtikel: lager){
    System.out.println(aktuellerArtikel.gibBestand() < 250) {
}
}
}

Nein, ich bekomme das einfach nicht zusammen!
 

Harry Kane

Top Contributor
public int level(level)
{
Artikel a = aktuellerArtikel(level);
for(Artikel aktuellerArtikel: lager){
System.out.println(aktuellerArtikel.gibBestand() < 250) {
}
}
}
1. Nichtssagender Methodenname "level". Vorschlag: zeigeArtikelUnterMindestbestand.
2. Fehlende Deklaration des Methodenparameters, und wenig sprechende Bezeichnung. Vorschlag: (int mindestBestand).
3. In "Artikel a = aktuellerArtikel(level)" wird "aktuellerArtikel" wie eine Methodenname verwendet (falsch), und die Variable "a" wird nie verwendet.
4. ImSysout stehen keine Artikeldaten, sondern nur, ob der Bestand unterhalb 250 liegt.
Ich bin raus. Ich kenne dein aktuelle Strategie zum Java lernen zwar nicht genau, aber sie scheint mir nicht für dich geeignet zu sein. Ich schätze du hast am Anfang ein paar Grundlagenkapitel übersprungen. Die solltest du dringend nachholen.
 

Devanther

Top Contributor
Also ich habe die Grundlagenkapitel sogar mehrmals gelesen!
Und ich lese jetzt nochmal im Java ist auch eine Insel Buch.

Code:
public void zeigeArtikelUnterMindestbestand.(level)
{
   for(Artikel aktuellerArtikel: lager){
    if ( aktuellerArtikel.gibBestand()  <level ){
    System.out.println(aktuellerArtikel.toString());
}
else{
System.out.println("Der Artikel ist nicht unter dem Mindestbestand);
}
}
 
Zuletzt bearbeitet:

JStein52

Top Contributor
Gibst du das eigentlich nur hier im Forum ein oder benutzt du deine IDE dazu ? Die müsste dir doch einige Fehler anzeigen. Bearbeite die doch mal. Und denke nochmal über 250 nach !! Wie kommst du auf 250 ? Wo steht das ?

Edit: Überlege mal was @Harry Kane mit seinem Punkt 2. oben gemeint hat ?
 
X

Xyz1

Gast
Ich gratuliere zu 1.000 Aufrufen.
@Devanther : Deine Klammerung ist nicht eindeutig/confusing. Entscheide zuerst, ob du einzeilige Anweisungen kLammern möchtest, setze dann Klammern richtig.
Mit Klammern seien hier die geschweiften Klammern ({ }) gemeint.
Lass dich von @Harry Kane nicht ins Bockshorn jagen, ich bin mir fast sicher, der weiß es auch nicht besser.
 

Devanther

Top Contributor
Also im BlueJ Editor werden überall Fehler angezeigt, sogar bei den anderen Methoden die richtig sind...
das ist mir keine große Hilfe.

Code:
public void zeigeArtikelUnterMindestbestand(int mindestBestand)
{
   for(Artikel aktuellerArtikel: lager){
    if ( aktuellerArtikel.gibBestand()  < mindestBestand ){
    System.out.println(aktuellerArtikel.toString());
}
else{
System.out.println( "Der Artikel ist nicht unter dem Mindestbestand);
}
}

System.out.println( "Der Artikel ist nicht unter dem Mindestbestand);

Da kommt ne Fehlermeldung: unclosed string literal
 

Harry Kane

Top Contributor
Also im BlueJ Editor werden überall Fehler angezeigt, sogar bei den anderen Methoden die richtig sind
Manchmal führt ein einziger kleiner Tippfehler dazu, das seeehr viel Code auf einmal als falsch markiert wird, weil die IDE mit dem Code, der auf den Fehler folgt, gar nix mehr anfangen kann. Lösung: den Ort suchen, wo das rote Unterkringeln (oder wie auch immer BluJ Fehler anzeigt) anfängt, und dort nach Fehlern suchen.
ich bin mir fast sicher, der weiß es auch nicht besser
Ups, erwischt! Macht aber nix, ein Wissender pro Forum sollte reichen.
 

Devanther

Top Contributor
Ich habe auch eclipse.
Klasse Bestandsverwalter:
Code:
package paket1;

import java.util.ArrayList;

public class Bestandsverwalter {

   
    private ArrayList<Artikel> lager;
   
    public Bestandsverwalter()
    {
        lager = new ArrayList<Artikel>();
       
       
    }
   
   
    public void zeigeArtikelUnterMindestbestand(int mindestBestand)
    {
       for(Artikel aktuellerArtikel: lager){
        if ( aktuellerArtikel.gibBestand()  < mindestBestand ){
        System.out.println(aktuellerArtikel.toString());
    }
    else{
    System.out.println( "Der Artikel ist nicht unter dem Mindestbestand");
    }
       }
    }
}

Klasse Artikel:
Code:
package paket1;

public class Artikel {

    public int gibBestand()
    {
        return gibBestand();
    }
}

Jetzt kommt keine Fehlermeldung, aber wenn ich auf ausführen gehe, wird nur "vorbei" ausgegeben.
 

Devanther

Top Contributor
Ja, natürlich. Flüchtigkeitsfehler^^

Code:
package paket1;

import java.util.ArrayList;


public class Bestandsverwalter {
   
    public static void main (String[] args) {

    }
    private ArrayList<Artikel> lager;
   
    public Bestandsverwalter()
    {
        lager = new ArrayList<Artikel>();
       
       
    }
   
   
    public void zeigeArtikelUnterMindestbestand(int mindestBestand)
    {
       for(Artikel aktuellerArtikel: lager){
        if ( aktuellerArtikel.gibBestand()  < mindestBestand ){
        System.out.println(aktuellerArtikel.toString());
    }
    else{
    System.out.println( "Der Artikel ist nicht unter dem Mindestbestand");
    }
       }
    }
}

Es wird gar nichts ausgegeben.
 
X

Xyz1

Gast
Also ich zähle jetzt nicht die Klammern, aber mindestens ein Klammer zu viel/zu wenig kann es sein. Erstens, zweitens bei BlueJ brauchst du gar keine main() - und von Eclipse würd ich einmal abraten.
 

Devanther

Top Contributor
Ich werde beides verwenden!

Wie kann ich das was ich bisher realisiert habe, also alle Aufgaben aus dem Artikelbestand in eclipse umsetzen?
Wie geht das?
Ich erstelle in eclipse 2 Klassen, Bestandsverwalter und Artikel, kopiere den Quelltext.
Wie klicke/verwende ich dann die Methoden die ich erstellt habe?
Wie soll ich dann in eclipse z.B. die 1ste Methode alleArtikelAnzeigen starten?
In BlueJ erstellt man ja einfach ein Objekt/Instanz von Bestandsverwalter
und kann dann die einzelnen Methoden sehen und anklicken.
 

Devanther

Top Contributor
Es gibt noch noch eine Aufgabe:
Verändern Sie die Methode neuerArtikel so, dass ein neuer Artikel
nicht eingefügt werden kann. wenn bereits ein Artikel mit dieser Nummer existiert.
Und es sollte dann noch eine Fehlermeldung ausgegeben werden.

Code:
public void neuerArtikel(Artikel artikel)
    {
        lager.add(artikel);
    }
 

Harry Kane

Top Contributor
Java:
package paket1;
public class Artikel {
    public int gibBestand(){
        return gibBestand();
    }
}
Wenn DAS die Artikel-Klasse ist, hast du sie seit deinem ersten Post in diesem Thread massiv verschlimmbessert. Sobald du gibBestand() auf einem Artikel aufrufst, sollte innerhalb von Sekundenbruchteilen ein StackOverflowError geworfen werden.
zweitens bei BlueJ brauchst du gar keine main()
Sehr nützlicher Hinweis. Warum sollte man sich die Bürde einer main-Methode auferlegen, wenn man das, wofür sie gedacht ist, auch auf zig Umwegen erreichen kann.
 

Harry Kane

Top Contributor
Du hast BlueJ noch nicht verstanden
Bitte bleibe doch beim Thema. Es geht in diesem Thread doch gar nicht darum, was ich kann oder verstehe oder auch nicht oder wie oder was (obwohl du aus welchem Grund auch immer dazu tendierst, das zum Thema zu machen), sondern darum, was dem TE beim Verstehen von Java hilft oder eher nicht.
Eine der zentralen Fragen in seinem letzten Thread war, wo und wie die an seinem Projekt beteiligten Klassen instanziiert werden. Die public static void main ist dazu ein geeignter Ort: Bestandsverwaltung erstellen, Artikel erstellen, dann Artikel in die Bestandsverwaltung packen, und mit den bereits mehr als hinlänglich diskutierten Methoden nach Artikeln suchen, etc. Offenbar verbirgt BlueJ bestimme Abläufe beim normalen Starten und Ablaufen lassen eines Java-Programms vor dem Benutzer. Mein Eindruck ist, dass das dem TE das Verstehen der Abläufe nicht erleichtert, sondern erschwert, und das dadurch auch der Lernfortschritt in diesem Thread negativ beeinflusst wird.
 
X

Xyz1

Gast
Nochmal, er kommt bis jetzt ganz gut klar mit BlueJ. Nach dreimal Schlafen wird er es auch in ner IDE umsetzen können. Zudem bin ich nicht für seinen "Lernfortschritt" verantwortlich.
Aber bitte das Portieren einer BlueJAnwenung in eine IDE erfordert lediglich das Hinzufügen einiger Methoden sowie Aufrufe. Und zwar solche, wie er sie bereits bei BlueJ "angeklickt" hat.
 

Harry Kane

Top Contributor
Nochmal, er kommt bis jetzt ganz gut klar mit BlueJ
Er soll nicht mit BlueJ "klarkommen" (das hier ist schliesslich primär kein BlueJ-Erklärungsforum), sondern er soll Java lernen und verstehen.
Aber sag ihm ruhig weiterhin, das BlueJ für ihn ok ist. Manche Menschen neigen halt dazu, einen einmal eingeschlagenen Weg weiterzugehen, anstatt sich umzuorientieren. Das mag zwar dem Wohlgefühl dienlich sein, aber nicht notwendigerweise dem Vorwärtskommen. Aber wie du schon oben gesagt hast: das ist nicht unser Problem.
 

Devanther

Top Contributor
Code:
public void neuerArtikel(int nummer)
    {
       lager.add(artikel);

        for(Artikel aktuellerArtikel: lager){
              if (aktuellerArtikel.gibNummer() == nummer) {
                 (kann nicht eingefügt werden code)
System.out.println("Es existiert bereits ein Artikel mit dieser Nummer!");
              }
         }
     
    }
Verändern Sie die Methode neuerArtikel so, dass ein neuer Artikel
nicht eingefügt werden kann. wenn bereits ein Artikel mit dieser Nummer existiert.
Und es sollte dann noch eine Fehlermeldung ausgegeben werden.
 

JStein52

Top Contributor
Die Fehlermeldung gibst du ja schon aus. Aber du fügst den Artikel trotzdem dazu. Guck mal wo dein add(artikel); steht ! Und wenn du mal in deinem allerallerallerersten Post hier schaust dann hat neuerArtikel nicht die Artikelnummer als Parameter sondern den Artikel !
 

JStein52

Top Contributor
Hier noch mal in Worten:
Code:
public void neuerArtikel(Artikel artikel)
    {
       // Artikelnummer holen


        for(Artikel aktuellerArtikel: lager){
              if (aktuellerArtikel.gibNummer() == nummer) {
                 System.out.println("Es existiert bereits ein Artikel mit dieser Nummer!");
                 // Methode verlassen und nichts weiter tun
              }
         }
       lager.add(artikel);
    }
 

Devanther

Top Contributor
Code:
import java.util.ArrayList;

/**
* Verwalte den Bestand eines Unternehmens.
* Der Bestand ist beschrieben durch einen oder
* mehrere Artikel.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
public class Bestandsverwalter
{
    // Das Lager mit den Artikeln
    private ArrayList<Artikel> lager;
   
    private int nummer;

    /**
     * Initialisiere den Bestandsverwalter.
     */
    public Bestandsverwalter()
    {
        lager = new ArrayList<Artikel>();
       
    }

    /**
     * Führe einen neuen Artikel im Lager ein.
     * @param artikel Der Artikel, der neue eingeführt werden soll.
     */
    public void neuerArtikel(Artikel artikel)
    {
       // Artikelnummer holen


        for(Artikel aktuellerArtikel: lager){
              if (aktuellerArtikel.gibNummer() == nummer) {
                 System.out.println("Es existiert bereits ein Artikel mit dieser Nummer!");
                 // Methode verlassen und nichts weiter tun
              }
         }
       lager.add(artikel);
    }
   
    public void zeigeArtikelUnterMindestbestand(int mindestBestand)
    {
       for(Artikel aktuellerArtikel: lager){
        if ( aktuellerArtikel.gibBestand()  < mindestBestand ){
        System.out.println(aktuellerArtikel.toString());
    }
    else{
    System.out.println( "Der Artikel ist nicht unter dem Mindestbestand");
    }
       }
    }
   
   
    /**
     * Nimm eine Lieferung eines Artikels in das Lager auf.
     * Erhöhe den Lagerbestand um die angegebene Menge.
     * @param nummer Die Artikelnummer des Artikels.
     * @param menge Die angelieferte Menge.
     */
   
public void aufnehmen(int nummer, int menge)
    {
        Artikel a = findeArtikel(nummer);
        if(a != null){
            a.erhoeheBestand(menge);
        }
    }
   
    /**
     * Versuche einen Artikel mit der angegebenen Nummer im
     * Bestand zu finden.
     * @param nummer die Nummer des zu findenden Artikels.
     * @return den gefundenen Artikel oder null, falls kein
     *         passender Artikel gefunden wird.
     */
     public Artikel findeArtikel(int nummer)
    {
         for(Artikel aktuellerArtikel: lager){
              if (aktuellerArtikel.gibNummer() == nummer) {
                 return aktuellerArtikel;
              }
         }
        return null;
    }
   
    /**
     * Finde einen Artikel mit der angegebenen Nummer und
     * liefere seine aktuelle Menge im Bestand.
     * Wenn die Nummer auf keinen Artikel passt, wird
     * Null zurückgeliefert.
     * @param nummer die Nummer des Artikels.
     * @return die Menge des Artikels im Bestand.
     */
    public int mengeImBestand(int nummer){
        Artikel a = findeArtikel(nummer);
        if(a != null){
            return a.gibBestand();
        }
        return 0;
    }

    /**
     * Informationen über alle Artikel ausgeben.
     */
    public void alleArtikelAnzeigen()
{
   for(Artikel aktuellerArtikel: lager){
    System.out.println(aktuellerArtikel.toString());
}
}
}
 

Neue Themen


Oben