Variablen Wie kann ich eine lokale Variable in eine andere Methode einfügen?

popelheinixd

Aktives Mitglied
Ich möchte diesen Code programmieren:
Java:
public class Artikel
{
    // Instanzvariablen
    String artikelbezeichnung;
    int bestand;
    double nettopreis;
    double kgProStck;
    int steuersatz;
 
    // Konstruktor
    public Artikel(String bezeich, int best, double pr, double kg, int steuer)
    {
        artikelbezeichnung = bezeich;
        bestand = best;
        nettopreis = pr;
        kgProStck = kg;
        steuersatz = steuer;
    }
 
    // Methoden
    public void veraendernBestand(int liefermenge)
    {
        bestand = bestand + liefermenge;
        ausgebenInformationen();
    }
 
    public void ausgebenInformationen()
    {
        System.out.println("Die Lieferung des Artikels" +artikelbezeichnung+ "hat eine Menge von" +liefermenge+ "Stueck mit einem Stueckpreis von" +bruttopreis+ "Euro und einem Gesamtwert von" +gesamtmenge+ "Euro.");
    }  
    public double holenBruttopreis()
    {
        double bruttopreis;
        bruttopreis = nettopreis + nettopreis * (steuersatz * 0.01);
        return bruttopreis;
    }
 
    public double berechnenPreisPosition()
    {
        double gesamtmenge;
        gesamtmenge = holenBruttopreis() * liefermenge;
        return gesamtmenge;
    }
}

Das liefermenge (in ausgebenInformationen) kann BlueJ nicht finden. Die Methode public void ausgebenInformationen() muss durch die Methode public void veraendernBestand(int liefermenge) aufgerufen werden.

Wie muss ich das richtig schreiben?
 
Zuletzt bearbeitet von einem Moderator:
Java:
public void ausgebenInformationen()
{
System.out.println("Die Lieferung des Artikels" +artikelbezeichnung+ "hat eine Menge von" +liefermenge+ "Stueck mit einem Stueckpreis von" +bruttopreis+ "Euro und einem Gesamtwert von" +gesamtmenge+ "Euro.");
}

Wenn du dieser Funktion
Java:
public void ausgebenInformationen()
einem
Parameter übergibst, der "liefermenge" heißt, dann ist das eine der Lösungen... (es gibt noch weitere).

Wie du das machst:

Du fügst in den klammern "()" deine Parameter ein. Also in deinem Beispiel:

Java:
public void ausgebenInformationen(datentyp liefermenge)

Hier ist zu beachten, dass der Platzhalter "datentyp" durch den Tatsächlichen Datentyp auszutauschen ist (z.B. int)
 
Wenn ich die Methoden holenBruttopreis() und berechnenPreisPosition() mit Daten gefüllt habe und dann die Methode veraendernBestand(int liefermenge) aufrufe und die Liefermenge eingebe, muss die Methode ausgebenInformationen() von allein angezeigt werden und mit den verknüpften Variablen gefüllt sein!
 
Java:
public class Artikel
{
// Instanzvariablen
String artikelbezeichnung;
int bestand;
double nettopreis;
double kgProStck;
int steuersatz;

// Konstruktor
public Artikel(String bezeich, int best, double pr, double kg, int steuer)
{
artikelbezeichnung = bezeich;
bestand = best;
nettopreis = pr;
kgProStck = kg;
steuersatz = steuer;
}

// Methoden
public void veraendernBestand(int liefermenge)
{
bestand = bestand + liefermenge;
ausgebenInformationen(); // Hier muss die liefermenge übergeben werden
}

public void ausgebenInformationen() // Hier musst du die Funktion um einen Parameter erweitern
{
System.out.println("Die Lieferung des Artikels" +artikelbezeichnung+ "hat eine Menge von" +liefermenge+ "Stueck mit einem Stueckpreis von" +bruttopreis+ "Euro und einem Gesamtwert von" +gesamtmenge+ "Euro.");

// Hier hast du die Möglichkeit anstatt "Bruttopreis" und "gesamtmenge" die Funktionen holenBruttopreis() und berechnenPreisPosition() hinzuschreiben.
}
public double holenBruttopreis()
{
double bruttopreis;
bruttopreis = nettopreis + nettopreis * (steuersatz * 0.01);
return bruttopreis;
}

public double berechnenPreisPosition()
{
double gesamtmenge;
gesamtmenge = holenBruttopreis() * liefermenge;
return gesamtmenge;
}
}

Siehe meine Kommentare....
 
Prinzipiell erledigen wir hier nicht die Aufgaben eines anderen (indem wir ihm/ihr die Lösung vorlegen, ohne dass er sich wenigstens bemüht hat.).
Und erst recht nicht, wenn, wie in deinem Fall, ersichtlich ist, dass du dich nicht damit auseinandersetzen willst.
Deine ständigen Fragen nach dem "Wie?" will doch nur heißen, dass du gerne Code sehen würdest, in per C&P in deine IDE einfügst und guckst, ob es funktioniert. Wenn es funktioniert, super, aber was hast du dabei gelernt? Nichts.

Tags zum Suchen in Google: Klassenattribute, Sichtbarkeit von Variablen, Methode mit Parameter aufrufen, Parameter an Methode übergeben.

Wenn man die Dinge beim Namen nennt, wird es (auch für Google) sichtlich einfacher, etwas damit anzufangen 🙂
 
Oder man könnte die allbekannte Suchmaschine verwenden, die mittlerweile schon fast wie ein Orakel ist.
Aber nun gut:
Wo ist deine Liefermenge deklariert? Deine Liefermenge taucht nur in "veraendernBestand" auf und das sogar als Parameter, heißt, die Variable Liefermenge ist auch nur innerhalb dieser Methode sichtbar.
Entweder du gehst nun hin und erstellst dir ein Klassenattribut oder du gehst hin und übergibst (genauso wie du es bei "veraendernBestand" gemacht hast!) der letzten Methode genau die gleichen Parameter.
Was aber auch schon mehr oder weniger deutlich mehrfach erwähnt wurde.

Edit: Lies dir doch einfach mal den Thread nochmal von Anfang bis Ende durch.
 
@Kababär Die Methode ausgebenInformationen() soll in die Methode veraendernBestand() eingebaut werden. Wenn ich dort meine liefermenge eingebe soll die Methode ausgebenInformationen() mit allen Informationen ausgegeben werden.

Könntest Du mir dies bitte Schritt für Schritt und mit erläuterten Fachwörter erklären?
 
Dann soll man es mir Schritt für Schritt für einen Anfänger erklären!

Wir alle hier im Forum sind mit besten Willen und mit bestem Wissen dabei, Anfängern zu helfen.

Entweder du willst nichts lernen oder du liest dir die ganzen Antworten nicht durch. In meinem Post #16 habe ich bereits auf meinem Post #6 verwießen.

In dem #6 Post habe ich erklärt, wie du einen Parameter einfügst.

Auch in Post #12 habe ich dir eine Erklärung anhand von Kommentaren geliefert.


@Cromewell hat dir in seinem Post #11 auch Lösungen dazu angeboten und bereits einen Fehler in seinem Post #14 entdeckt.

Edit: Lies dir doch einfach mal den Thread nochmal von Anfang bis Ende durch.

Nimm dir das mal zu Herzen und lies dir den Thread nochmals durch.

Liebe Grüße
T_T
 
Tut mir leid, aber nein, denn du erläuterst nicht wo genau dein Problem liegt.
Ich meine, guck dir deine Methode "ausgebenInformationen" an. Was passiert da?
Wäre es möglich, einfach den Methodenblock von a nach b zu schieben oder muss was angepasst werden?
Wie könnte ich prüfen, ob ich nun eine Liefermenge mit angegeben habe oder nicht?

Das könnten Beispielfragen sein, die du entweder uns oder besser noch dir selbst stellen könntest.

Dir fehlen eindeutig die Basics. Nimm es mir nicht übel, aber einlesen musst du dich alleine, hier wird wohl niemand die Basics von unten nach oben aufrollen, da es zuhauf Informationen und Tutorials im Internet existieren.
 
@T_T Ich habe es genau so gemacht wie du es gesagt hast. Es hat auch funktioniert. Dafür musste ich die Methode public void ausgebenInformationen(int liefermenge) aufrufen, gab den Übergabeparameter ein und schon kam mein Satz.
Ich möchte es aber so schreiben, dass genau diese Methode in der Methode public void veraendernBestand(int liefermenge) drin ist.
 
Ich möchte es aber so schreiben, dass genau diese Methode in der Methode public void veraendernBestand(int liefermenge) drin ist.

Java:
// Methoden
    public void veraendernBestand(int liefermenge)
    {
        bestand = bestand + liefermenge;
        ausgebenInformationen(); // Hier muss der Parameter in die () rein....
    }

Das ist dein Ausgangspunkt. Die Funktion ausgebenInformationen(); hast du ja bereits geändert (laut deinem Post). Jetzt musst du eben hier nur noch den Parameter übergeben .
 

Zurück
Oben