Variablen aufrufen

ashi

Mitglied
Hi! Ich bekomme es irgendwie nicht hin die Variable cash (Zeile 14) in Zeile 26 wieder aufzurufen hab schon etliche Tutorials geguckt aber nichts klappt irgendwie. Das cash in Zeile 30 wird immer als das in Zeile 6 aufgefasst, was ich auch nicht versteh, stand aber so in der Aufgabenstellung? (Falls Sie jemand sehen möchte: Klasse Konto soll mit den Attributen „besitzer“ und „kontostand“ ausgestattet werden. Erzeugen Sie in Ihrer main-Methode ein Objekt dieser Klasse und weisen Sie diesem mit Hilfe des Scanner Werte zu. Legen Sie eine zusätzliche Klasse an, in welche die main()-Methode ausgelagert wird. Testen Sie ihre Zuweisungen mit einer Ausgabe in der Konsole. Ergänzen Sie Ihr Programm Konto um einen Konstruktor mit zwei Übergabewerten, welcher direkt die beide Attribute mit den übergebenen Werten befüllt.) Vielleicht lieg ich aber auch komplett daneben, bin totaler Anfänger, sorry!

[CODE lang="java" highlight="30"]package aufgaben;
import java.util.Scanner;

public class Konto {
private String user;
private double cash;

public static void main(String[] args) {
Scanner scan = new Scanner(System.in);

System.out.println("Besitzer?:");
String user = scan.nextLine();
System.out.println("Kontostand?:");
Double cash = scan.nextDouble();

System.out.printf("Besitzer ist %s, Kontostand: %.2f", user, cash);

einzahlen();
}

private static void einzahlen() {

Scanner scan2 = new Scanner(System.in);
System.out.println("Was möchten Sie einzahlen?: ");
double einzahlung = scan2.nextDouble();
double endbetrag = einzahlung + cash //? wie bekomm ich cash
System.out.println("Neuer Kontostand: " + endbetrag);
}
}
[/CODE]
 
Zuletzt bearbeitet:

temi

Top Contributor
Es gibt doch gar keine Zeile 30.

Das Problem ist der Gültigkeitsbereich von Variablen, die beide lokale Variablen der Methode main() sind.
Java:
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
      
        System.out.println("Besitzer?:");
        String user = scan.nextLine(); // hier wird eine neue Variable user erzeugt
        System.out.println("Kontostand?:");
        Double cash = scan.nextDouble(); // hier wird eine neue Variable cash erzeugt

        System.out.printf("Besitzer ist %s, Kontostand: %.2f", user, cash);
      
        einzahlen();
    } // hier endet die Gültigkeit der lokalen Variablen user und cash

Das es neue lokale Variablen sind, liegt an der Typangabe vor den Variablen. Damit sagst du, dass du neue Variablen anlegen möchtest. Die beiden gleichnamigen Instanzvariablen werden dadurch verdeckt. Lass einfach den Typen weg.
 

ashi

Mitglied
ja das hab ich auch gedacht aber es gibt doch Möglichkeiten die trotzdem aufzurufen oder? Hab gesehen dass Leute sowas wie Klasse.variable nutzen aber das klappt alles nicht bei mir
 

Neumi5694

Top Contributor
So, jetzt aber ...
Das Konto sollte eine Eigenschaft "guthaben" haben.
Wenn du was einzahlen willst, musst du der Methode einzahlen sagen, wie viel das sein soll
Java:
public class Konto {

    private double guthaben = 0d;
    public double getGuthaben() {
        return guthaben;
    }

    /**
     * Fügt dem Guthaben den Betrag hinzu
     * @param cash Einzuzahlender Betrag. Um Missbrauch vorzubeugen, wird der Absolutwert verwendet
     */
    public void einzahlen (double cash) {
        if (cash <0) {
            throw new UnsupportedOperationException("Betrag darf nicht kleiner als 0 sein")
        }
        guthaben = guthaben + cash;
    }

}
 
Zuletzt bearbeitet:

ashi

Mitglied
Ich habe den Beitrag editiert. Lies nochmal nach, das dürfte die Frage beantworten.
stimmt danke!:) Wenn ich den Typ weg lass klappt es. Kann mir trotzdem jemand sagen was dann das mit dem Klasse.variable ist dadurch konnte man auch in verschiedenen Programmen Sachen nutzen aber hat bei mir nie geklappt vlt benutz ich sie für was falsches?
 

temi

Top Contributor
Also nochmal mit einem Minibeispiel:
Java:
class Foo {
    
    int value;
    
    void doSomething() {
        int value = 42; // durch die Typangabe "int" wird eine neue Variable value erzeugt
        
        this.value = value; // der Wert der lokalen Variabeln wird der Instanzvariablen zugewiesen
    }
    
    void doSomethingElse() {
        value = 42; // da es hier keine andere Variable mit dem selben Namen gibt, wird der Wert
                    // der Instanzvariablen "value" zugewiesen
    }
}
 

temi

Top Contributor
stimmt danke!:) Wenn ich den Typ weg lass klappt es. Kann mir trotzdem jemand sagen was dann das mit dem Klasse.variable ist dadurch konnte man auch in verschiedenen Programmen Sachen nutzen aber hat bei mir nie geklappt vlt benutz ich sie für was falsches?
Arbeitet ihr bereits mit Instanzen von Klassen, also mit etwas wie Konto konto = new Konto()? Oder ist bei euch alles "static"?

Für die Erklärung ist etwas Hintergrund erforderlich...
 

ashi

Mitglied
Arbeitet ihr bereits mit Instanzen von Klassen, also mit etwas wie Konto konto = new Konto()? Oder ist bei euch alles "static"?

Für die Erklärung ist etwas Hintergrund erforderlich...
Hatten wir an sich auch schon unser Prof ist nur leider nicht sehr ambitioniert wenns ums erklären geht...hab mir das durch youtube versucht beizubringen
 

Neumi5694

Top Contributor
Hab meinen Post mit dem Beispiel nochmal überarbeitet.
Damit du auf ein Konto was einzahlen kannst, muss es erst mal existieren, temi hat das mit "new Konto()" schon angedeutet.
Eingezahlt wird dann mit
Java:
meinKonto.einzahlen(50000);

Wenn du objektorientiert arbeiten willst, dann sollte das Konto keine main-Methode haben. Ich mein: wer führt schon ein Konto aus?
(am Besten immer mit RealLife vergleichen, so designt man die Klasen am verständlichsten)

Das Konto ist eine Klasse mit bestimmten Eingenschaften (Inhaber, Guthaben), die Main-Methode sollte in einer eigenen Klasse für die Logik stehen, die dann ein Konto erstellt und befüllt.
 

temi

Top Contributor
Hab meinen Post mit dem Beispiel nochmal überarbeitet.
Damit du auf ein Konto was einzahlen kannst, muss es erst mal existieren, temi hat das mit "new Konto()" schon angedeutet.
Eingezahlt wird dann mit
Java:
meinKonto.einzahlen(50000);
Basierend auf die Kontoklasse von @Neumi5694 könnte in der main() also ungefähr folgendes stehen:
Java:
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
      
        System.out.println("Besitzer?:");
        String user = scan.nextLine(); // hier wird eine neue Variable user erzeugt
        System.out.println("Kontostand?:");
        Double cash = scan.nextDouble(); // hier wird eine neue Variable cash erzeugt

        Konto konto = new Konto();
        konto.einzahlen(cash);

        // Besitzer wird hier nicht weiter berücksichtigt und müsste in der Kontoklasse noch ergänzt werden
        
        System.out.printf("Besitzer ist %s, Kontostand: %.2f", user, konto.getGuthaben());
    }
 

temi

Top Contributor
Kann mir trotzdem jemand sagen was dann das mit dem Klasse.variable ist
Man unterscheidet Klassen- und Instanzvariablen. Wie der Name schon sagt, existiert eine Klassenvariable einmal für die Klasse und eine Instanzvariable für jede von der Klasse erzeugte Instanz.
Java:
class Foo {
    int instanceVariable; // gibt es für jede Instanz separat
    static int classVariable; // gibt es nur einmal
}


Foo.classVariable = 42; // die Klassenvariable enthält jetzt den Wert 42

Foo foo1 = new Foo(); // ein neues Foo
foo1.instanceVariable = 1; // die Instanzvariable von foo1 enthält den Wert 1

Foo foo2 = new Foo(); // und noch ein neues Foo
foo2.instanceVariable = 2; // die Instanzvariable von foo2 enthält den Wert 2

int a = foo1.classVariable; // a enthält 42
int b = foo2.classVariable; // b enthält 42

Ziel sollte es sein, im Programm nur einmal "static" stehen zu haben, nämlich bei der Methode main(). Für den Einsatz von "static" gibt es besondere Gründe, die häufig nicht zutreffen.
 

ashi

Mitglied
Man unterscheidet Klassen- und Instanzvariablen. Wie der Name schon sagt, existiert eine Klassenvariable einmal für die Klasse und eine Instanzvariable für jede von der Klasse erzeugte Instanz.
Java:
class Foo {
    int instanceVariable;
    static int classVariable;
}


Foo.classVariable = 42; // die Klassenvariable enthält jetzt den Wert 42

Foo foo1 = new Foo(); // ein neues Foo
foo1.instanceVariable = 1; // die Instanzvariable von foo enthält den Wert 1

Foo foo2 = new Foo(); // und noch ein neues Foo
foo2.instanceVariable = 2; // die Instanzvariable von foo enthält den Wert 2

int a = foo1.classVariable; // a enthält 42
int b = foo2.classVariable; // b enthält 42
Könnte man die Klassenvariablen dann auch in anderen Klassen benutzen? Also wenn ich jetzt in meiner Konto Klasse Foo.classvariable benutzen würde ginge das? Oder muss man das anders machen
 

temi

Top Contributor
Könnte man die Klassenvariablen dann auch in anderen Klassen benutzen? Also wenn ich jetzt in meiner Konto Klasse Foo.classvariable benutzen würde ginge das? Oder muss man das anders machen
Geht schon, aber
Ziel sollte es sein, im Programm nur einmal "static" stehen zu haben, nämlich bei der Methode main(). Für den Einsatz von "static" gibt es besondere Gründe, die häufig nicht zutreffen.
Normalerweise arbeitet man immer mit Instanzen, die z. B. an andere Klassen übergeben werden, damit diese damit arbeiten können.
 

temi

Top Contributor
Beispiel mit fiktiven Klassen
Java:
Owner owner = new Owner("Hans", "Mustermann", 42);

Account account = new Account(owner); // Konto benötigt eine Instanz von Besitzer

Booking booking = new Booking("Bareinzahlung", 100.0);

account.applyBooking(booking); // irgendeine Kontobuchung

List<Booking> allBookings = account.getBookings(); // alle Buchungen holen
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Welcher Object-Lock-Pool bei static Variablen? Java Basics - Anfänger-Themen 3
T variablen klassen übergreifend Java Basics - Anfänger-Themen 12
T Variablen Java Basics - Anfänger-Themen 1
N Verständnis Frage zu Variablen Java Basics - Anfänger-Themen 3
M Aufsummieren von variablen Wertegrößen Java Basics - Anfänger-Themen 17
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
U Warum kann ich, auf private Variablen zugreifen, wenn ich ein Objekt in der Klasse, die private Variablen hat erstelle und dort drauf zugreifen will? Java Basics - Anfänger-Themen 7
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
A 2 Strings vergleichen in einer methode wenn man mit Globalen variablen arbeitet Java Basics - Anfänger-Themen 12
C Konstruktoren und Variablen Java Basics - Anfänger-Themen 42
F Auf Variablen eines Konstruktors zugreifen Java Basics - Anfänger-Themen 4
N Variable aus anderen Variablen in statischer Klasse berechnen/abspeichern? Java Basics - Anfänger-Themen 4
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
B Methoden Methoden haben kein Zugriff auf variablen Java Basics - Anfänger-Themen 4
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
Arif Vererbung Methodenvererbung mit finalen Variablen Java Basics - Anfänger-Themen 1
M Wie kann ich ein Objekt erstellen, wenn sich der Klassenname in einer Variablen befindet? Java Basics - Anfänger-Themen 10
S Variablen Variablen in einer Schleife erstellen lassen Java Basics - Anfänger-Themen 11
J Ich brauche Hilfe bei einem Code (Variablen speichern) Java Basics - Anfänger-Themen 29
F Variablen Werte einer Klasse überschreiben Java Basics - Anfänger-Themen 4
N Speichern von Werten in Variablen nach Schließen des Programms Java Basics - Anfänger-Themen 3
J Frage dazu Variablen klassenübergreifend zu verändern Java Basics - Anfänger-Themen 22
M Java Instanz-Variablen ? Java Basics - Anfänger-Themen 3
B Variablen von Methoden übertragen Java Basics - Anfänger-Themen 2
M Variablen umbenennen Java Basics - Anfänger-Themen 1
T Körper Brechnung - Lokale Variablen in Methoden übergeben Java Basics - Anfänger-Themen 10
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
mars90 Fehler in der Variablen Deklaration Java Basics - Anfänger-Themen 8
E Variablen in formatierter Ausgabe Java Basics - Anfänger-Themen 15
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
M Komisches Verhalten der Variablen Java Basics - Anfänger-Themen 6
H Variablen Multiplikation einer inkrementierten Variablen Java Basics - Anfänger-Themen 5
scratchy1 Variablen vertauschen wenn Bedingung "umgedreht" wird Java Basics - Anfänger-Themen 40
J Variablen mit einer anderen Klasse bekannt machen Java Basics - Anfänger-Themen 7
C Methoden Problem beim Speichern von Variablen Java Basics - Anfänger-Themen 1
A Übergreifende Variablen Java Basics - Anfänger-Themen 17
A Variablen Verständnisfrage bzgl. Variablen/Referenzen Java Basics - Anfänger-Themen 3
H Variablen Methode zum Abfragen von Variablen aus Subklassen Java Basics - Anfänger-Themen 9
P Variablen Variablen voneinander abhängig Java Basics - Anfänger-Themen 54
F Liste nach einer Variablen sortieren Java Basics - Anfänger-Themen 6
L Variablen in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
M For-Schleife durch zwei versch. Variablen begrenzen Java Basics - Anfänger-Themen 27
J Klassen Variablen in andere Klassen oder Methoden übernehmen Java Basics - Anfänger-Themen 1
P Liste auslesen und in Variablen speichern Java Basics - Anfänger-Themen 7
temi Redundante Variablen Java Basics - Anfänger-Themen 29
Aprendiendo Zweifel mit versteckter Variablen Java Basics - Anfänger-Themen 16
L Variablen einmal nur zu weisen Java Basics - Anfänger-Themen 62
D Statische Variablen/Methoden Java Basics - Anfänger-Themen 3
R Abfrage von Variablen in Unterklassen einer ArrayList Java Basics - Anfänger-Themen 9
M Listener für Button - Wert von Variablen verändern Java Basics - Anfänger-Themen 14
S Vererbung Variablen klassenübergreifend nutzen Java Basics - Anfänger-Themen 42
R Auf Variablen einer anderen Klasse zugreifen? Java Basics - Anfänger-Themen 1
D Fehlermeldung obwohl Variablen bereits deklariert sind? Java Basics - Anfänger-Themen 14
E 2 Probleme - Datum & private finale Variablen Java Basics - Anfänger-Themen 5
Aruetiise Variablen JFrame und Variablen Java Basics - Anfänger-Themen 3
L Variablen dekleration + reset Java Basics - Anfänger-Themen 16
T Übernahme einer Variablen im ActionListener/ActionEvent Java Basics - Anfänger-Themen 2
D Kapselung final Variablen mit Getter? Java Basics - Anfänger-Themen 2
C Variablen von einem JFrame in einen anderen übertragen Java Basics - Anfänger-Themen 3
P Interface Variablen-Inhalte werden nicht übergeben Java Basics - Anfänger-Themen 3
C Variablen in Schleifen außerhalb verwenden Java Basics - Anfänger-Themen 2
S Variablen Flexible Variablen Namen Java Basics - Anfänger-Themen 3
R Erste Schritte 3 Variablen hochzählen lassen Java Basics - Anfänger-Themen 1
RowdyN Variablen Variablen beliebig benennen? Java Basics - Anfänger-Themen 6
S OOP Variablen zwischen mehreren Klassen Java Basics - Anfänger-Themen 11
T Koordinatensystem zeichnen - Variablen merken? Quadratische Funktion zeichnen? Java Basics - Anfänger-Themen 5
H Variablen einer Schleife zwischenspeichern Java Basics - Anfänger-Themen 2
P Klassen Variablen von einer Klasse zur anderen Java Basics - Anfänger-Themen 5
H Objekt überschreibt Variablen vorheriger Objekte Java Basics - Anfänger-Themen 2
P Variablen in Excel speichern Java Basics - Anfänger-Themen 6
S PHP Aufruf mit mehreren Variablen Java Basics - Anfänger-Themen 2
F Variablen unterschiedlicher Datentypen Java Basics - Anfänger-Themen 6
S ActionListener und Statische Variablen Java Basics - Anfänger-Themen 4
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
L Vergleich zweier Variablen, mit Abweichung Java Basics - Anfänger-Themen 3
P Variablen einer Methode in andere Method übergeben Java Basics - Anfänger-Themen 6
G Variablen Verwendung von Variablen in anderer Klasse Java Basics - Anfänger-Themen 6
P Textfelder in Variablen speichern Java Basics - Anfänger-Themen 13
K arraygröße durch variablen Konstruktor? Java Basics - Anfänger-Themen 7
J Vererbung Variablen aus Superklasse übernehmen Java Basics - Anfänger-Themen 2
L Variablen aus TXT Datei auslesen und vergleichen. Java Basics - Anfänger-Themen 5
K Welchen Typ haben Variablen in Default-Methoden und in statischen Methoden in Schnittstellen? Java Basics - Anfänger-Themen 4
K Wieso muss man finale statische Variablen sofort oder eben im Konstruktor initialisieren? Java Basics - Anfänger-Themen 2
L zwei Variablen gleichzeitig übergeben Java Basics - Anfänger-Themen 6
J Vererbung privater Variablen Java Basics - Anfänger-Themen 7
D Klassen Verhalten von Klassenvererbung bei Variablen Java Basics - Anfänger-Themen 1
G Alle Objekte und Variablen automatisch ausgeben Java Basics - Anfänger-Themen 7
S OOP Werte von Vektoren mit 3 Variablen ausgeben lassen Java Basics - Anfänger-Themen 3
A Variablen aus einer Schleife gezielt auslesen Java Basics - Anfänger-Themen 11
A Methoden Zugriff auf eingelesene Variablen in der main Methode (ohne Änderung der Parameterliste) Java Basics - Anfänger-Themen 4
K Enigma, variablen übernehmen Java Basics - Anfänger-Themen 6
F Erste Schritte Dynamische Variablen Java Basics - Anfänger-Themen 15
N Variablen zurück casten Java Basics - Anfänger-Themen 3
M Repräsentation von variablen/OOP Java Basics - Anfänger-Themen 2
B Probleme beim einlesen einer short variablen für einen Array Java Basics - Anfänger-Themen 1
S Warum erlaubt ein while-Loop keine Variablen-Declaration wie der for-Loop..? Java Basics - Anfänger-Themen 6
S Variablen Variable erzeugen und Array mit Variablen befüllen Java Basics - Anfänger-Themen 26

Ähnliche Java Themen

Neue Themen


Oben