Methoden Bitte Helft mir meinen Fehler zu finden. Möchte in diesem Bankenprogramm durch die Konsoleneingabe auswählen welches Konto reduziert und welches erhö

flocke77

Mitglied
Das ist die Elternklasse


Java:
import java.util.Scanner;
public class konto {
public String name;
private int kontoNr;
private double kontoStand;

public konto(String name, int kontoNr, double kontoStand) {
this.name = name;
this.kontoNr = 0;
this.kontoStand = 0;
}

void ueberWeisen(konto zielKonto, double betrag) {
kontoStand -= betrag;
zielKonto.kontoStand += betrag;
System.out.println("Neuer Kontostand reduziertes Konto: "+ kontoStand);
System.out.println("Neuer Kontostand erhöhtes Konto: "+ zielKonto.kontoStand);
}

void dataRead() {
Scanner readKonto = new Scanner(System.in);
System.out.println("Geben sie den Namen des Kontoinhabers ein: ");
String readName = readKonto.next(name);
name = readName;
System.out.println("Geben sie die Kontonummer ein: ");
int readKontoNr = readKonto.nextInt();
kontoNr = readKontoNr;
System.out.println("Geben sie den Kontostand ein: ");
int readKontoStand = readKonto.nextInt();
kontoStand = readKontoStand;
System.out.println("Name des Kontoinhabers: "+ readName + "\n" + "Kontonummer: " + readKontoNr + "\n" + "Kontostand: " + readKontoStand);
}

public konto() {

}
}

Die erste Kindklasse

Java:
public class Girokonto extends konto{
Girokonto(String name, int kontoNr, double kontoStand){
  super(name, kontoNr, kontoStand);
}

Girokonto() {
  
}
}


Die zweite Kindklasse

Java:
public class Sparbuch extends konto{
Sparbuch(String name, int kontoNr, double kontoStand){
  super(name, kontoNr, kontoStand);
}

Sparbuch() {
  
}
}




Und das Hauptprogramm:


Java:
import java.util.Scanner;
public class Bankleitsystem {
public static void main (String[] args) {
konto konto1 = new konto();
Girokonto gKonto = new Girokonto();
Sparbuch sKonto = new Sparbuch();

konto1.dataRead();
gKonto.dataRead();
sKonto.dataRead();

Scanner waehleKonto = new Scanner(System.in);
System.out.println("Wählen sie das Konto aus das sie reduzieren möchten."+"\n"+"Für das konto wählen sie die 1, für das Girokonto die 2 und für das Sparbuch die 3: ");
int kWahl1 = waehleKonto.nextInt();
System.out.println("Wählen sie das Konto aus das sie erhöhen möchten."+"\n"+"Für das konto wählen sie die 1, für das Girokonto die 2 und für das Sparbuch die 3: ");
int kWahl2 = waehleKonto.nextInt();
System.out.println("Wählen sie den gewünschten überweisungsbetrag: ");
double ueberWahl = waehleKonto.nextInt();

switch(kWahl1) {
case 1:
switch(kWahl2) {
case 2: konto1.ueberWeisen(gKonto, ueberWahl);
break;
case 3: konto1.ueberWeisen(sKonto, ueberWahl);
break;
default: System.out.println("Falsche Eingabe! Bitte 1, 2 oder 3 wählen.");
break;
}
break;
case 2:
switch(kWahl2) {
case 1: gKonto.ueberWeisen(konto1, ueberWahl);
break;
case 3: gKonto.ueberWeisen(sKonto, ueberWahl);
break;
default: System.out.println("Falsche Eingabe! Bitte 1, 2 oder 3 wählen.");
break;
}
case 3:
switch(kWahl2) {
case 1: sKonto.ueberWeisen(konto1, ueberWahl);
break;
case 2: sKonto.ueberWeisen(gKonto, ueberWahl);
default: System.out.println("Falsche Eingabe! Bitte 1, 2 oder 3 wählen.");
break;
}
}
}
}
 
Zuletzt bearbeitet von einem Moderator:

flocke77

Mitglied
Code:
import java.util.Scanner;

public class konto {
    public String name;
    private int kontoNr;
    private double kontoStand;
    
    public konto(String name, int kontoNr, double kontoStand) {
        this.name = name;
        this.kontoNr = 0;
        this.kontoStand = 0;
    }
    
    void ueberWeisen(konto zielKonto, double betrag) {
        kontoStand -= betrag;
        zielKonto.kontoStand += betrag;
        System.out.println("Neuer Kontostand reduziertes Konto: "+ kontoStand);
        System.out.println("Neuer Kontostand erhöhtes Konto: "+ zielKonto.kontoStand);
    }
    
    void dataRead() {
        Scanner readKonto = new Scanner(System.in);
        System.out.println("Geben sie den Namen des Kontoinhabers ein: ");
        String readName = readKonto.next(name);
        name = readName;
        System.out.println("Geben sie die Kontonummer ein: ");
        int readKontoNr = readKonto.nextInt();
        kontoNr = readKontoNr;
        System.out.println("Geben sie den Kontostand ein: ");
        int readKontoStand = readKonto.nextInt();
        kontoStand = readKontoStand;
        System.out.println("Name des Kontoinhabers: "+ readName + "\n" + "Kontonummer: " + readKontoNr + "\n" + "Kontostand: " + readKontoStand);
        }
    
    public konto() {
        
    }
}
 

flocke77

Mitglied
Code:
public class Girokonto extends konto{
    Girokonto(String name, int kontoNr, double kontoStand){
        super(name, kontoNr, kontoStand);
    }
    
    Girokonto() {
        
    }
}
 

flocke77

Mitglied
Code:
public class Sparbuch extends konto{
    Sparbuch(String name, int kontoNr, double kontoStand){
        super(name, kontoNr, kontoStand);
    }
    
    Sparbuch() {
        
    }
}
 

flocke77

Mitglied
Code:
import java.util.Scanner;

public class Bankleitsystem {
    public static void main (String[] args) {
        konto konto1 = new konto();
        Girokonto gKonto = new Girokonto();
        Sparbuch sKonto = new Sparbuch();
        
        konto1.dataRead();
        gKonto.dataRead();
        sKonto.dataRead();
        
        Scanner waehleKonto = new Scanner(System.in);
        System.out.println("Wählen sie das Konto aus das sie reduzieren möchten."+"\n"+"Für das konto wählen sie die 1, für das Girokonto die 2 und für das Sparbuch die 3: ");
        int kWahl1 = waehleKonto.nextInt();
        System.out.println("Wählen sie das Konto aus das sie erhöhen möchten."+"\n"+"Für das konto wählen sie die 1, für das Girokonto die 2 und für das Sparbuch die 3: ");
        int kWahl2 = waehleKonto.nextInt();
        System.out.println("Wählen sie den gewünschten überweisungsbetrag: ");
        double ueberWahl = waehleKonto.nextInt();
        
        switch(kWahl1) {
        case 1:
            switch(kWahl2) {
            case 2: konto1.ueberWeisen(gKonto, ueberWahl);
            break;
            case 3: konto1.ueberWeisen(sKonto, ueberWahl);
            break;
            default: System.out.println("Falsche Eingabe! Bitte 1, 2 oder 3 wählen.");
            break;
            }
            break;
        case 2:
            switch(kWahl2) {
            case 1: gKonto.ueberWeisen(konto1, ueberWahl);
            break;
            case 3: gKonto.ueberWeisen(sKonto, ueberWahl);
            break;
            default: System.out.println("Falsche Eingabe! Bitte 1, 2 oder 3 wählen.");
            break;
            }
        case 3:
            switch(kWahl2) {
            case 1: sKonto.ueberWeisen(konto1, ueberWahl);
            break;
            case 2: sKonto.ueberWeisen(gKonto, ueberWahl);
            default: System.out.println("Falsche Eingabe! Bitte 1, 2 oder 3 wählen.");
            break;
            }
        }
    }
}
 

Kirby.exe

Top Contributor
Java:
    public konto(String name, int kontoNr, double kontoStand) {
        this.name = name;
        this.kontoNr = 0;
        this.kontoStand = 0;
    }
}
Was mir aber hier auffällt ist, dass du Werte übergibst und sie nicht zuweist ;)

Es sollte eher so aussehen:
Java:
public konto(String name, int kontoNr, double kontoStand) {
    this.name = name;
    this.kontoNr = kontoNr;
    this.kontoStand = kontoStand;
}
 

MoxxiManagarm

Top Contributor
Vor allem...was genau ist dein Problem?
Ich würde sagen er hat viele Probleme (leider). Mal eine winzige Auswahl:
- 2x nextInt() hintereinander
Java:
int kWahl1 = waehleKonto.nextInt();
int kWahl2 = waehleKonto.nextInt();
- Der Parameter name in next macht keinen Sinn https://docs.oracle.com/en/java/jav...java/util/Scanner.html#next(java.lang.String) vs https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Scanner.html#next()
Java:
String readName = readKonto.next(name);
- Einen double kann man nicht mit nextInt() einlesen
Java:
double ueberWahl = waehleKonto.nextInt();
-
Was mir aber hier auffällt ist, dass du Werte übergibst und sie nicht zuweist ;)
Den Konstruktor ruft er nicht mal auf
 

temi

Top Contributor
In Java werden per Konvention Klassennamen immer mit einem Großbuchstaben begonnen. Variablen- und Methodennamen immer mit einem Kleinbuchstaben (außer natürlich der Konstruktor). Das sollte man sich von Anfang an angewöhnen. Du hast das fast überall gemacht, bis auf die Klasse "konto".

Edit: Die Ausführungen von hier an führen evtl. zu weit für dich. Wenn du magst lies sie und setze sie auch um. Du kannst das aber auch erst Mal ignorieren, bis du etwas weiter bist.

Die parameterlosen Standardkonstruktoren solltest du in allen deinen Klassen entfernen. Generell sollte eine Instanz nach der Erstellung "benutzbar" sein, also alle wichtigen Zuständen (in den Instanzvariablen) sollten korrekt zugewiesen werden. Das wird i.d.R. über den Konstruktor realisiert. Deine verwendeten Konstruktoren sollten demnach alle Parameter haben. Sonst kannst du ja namenlose Konten erstellen und das ist nicht im Sinne des Erfinders.

Ich sehe auch warum du das gemacht hast. Du hast Ein- und Ausgaberoutinen in deinen Klassen. Das ist nicht so schön. Normalerweise wird die Ein- und Ausgabe von der Logik getrennt. Du solltest also neben deinen Kontoklassen noch Klassen für das Einlesen der Kontodaten und der Kontobewegungen haben und für die Ausgabe.
 
Zuletzt bearbeitet:

M.L.

Top Contributor
Das Programm lässt sich in dem gezeigten Zustand -mit einer kleinen Korrektur- unter Eclipse mit JDK 12 übrigens zum Laufen und Ausführen bringen. Und bei der Abfrage und der Kontrolle der möglichen Eingabewerte sollte man informative Hinweise und sinnvolle Grenzen setzen (und diese intern kontrollieren). Wobei an dem Programm noch mehr zu reparieren ist, siehe vorige Kommentare.
Die kleine Korrektur bezieht sich auf das bereits genannte "String readName = readKonto.next(name); " und sollte besser durch
Code:
 String readName = readKonto.nextLine();
ersetzt werden (Stichwort ansonsten: NPE)
 

MoxxiManagarm

Top Contributor
Genereller Tipp:
Ich bin persönlich kein Fan von switch-case. Fast alle Usecases lassen sich ohne diesen realisieren. In deinem speziellen Fall hast du n Konten, hier mit n = 3. Stell dir vor dein Prof verlangt nun dein Code soll 4 Konten haben, was machst du dann? Willlst du echt alle switch-case vergrößern? Der Aufwand steigt quadratisch! Statt dem Switch-Case legst du die eine Menge von Konten an, z.B. ein Array. Dann suchst du dir das entsprechende Konto mit dem Index. Das sieht dann etwa so aus:

Java:
Konto[] konten = { konto, girokonto, sparbuch };
Konto konto1 = konten[kWahl1 - 1];
Konto konto2 = konten[kWahl2 - 1];
konto1.ueberweise(konto2, betrag);
 

flocke77

Mitglied
Es hat funktioniert! Habe die leeren Konstruktoren entfernt, nextint durch nextdouble ersetzt, readKonto.next(Name) durch readKonto.nextLine ersetzt und zu guter Letzt die switch cases durch ein Array.
War echt super hilfreich und ich bin froh das es läuft.
Das ich die Ein- und Ausgabe in extra Klassen anlege und das Programm nochmal umstrukturiere damit beschäftige ich mich die Tage nochmal.
 

flocke77

Mitglied
Code:
import java.util.Scanner;

public class Bankleitsystem {
    public static void main (String[] args) {
        Konto konto1 = new Konto(null, 0, 0);
        Girokonto gKonto = new Girokonto(null, 0, 0);
        Sparbuch sKonto = new Sparbuch(null, 0, 0);
        
        konto1.dataRead();
        gKonto.dataRead();
        sKonto.dataRead();
        
        Scanner waehleKonto = new Scanner(System.in);
        System.out.println("Wählen sie das Konto aus das sie reduzieren möchten."+"\n"+"Für das konto wählen sie die 1, für das Girokonto die 2 und für das Sparbuch die 3: ");
        int kWahl1 = waehleKonto.nextInt();
        System.out.println("Wählen sie das Konto aus das sie erhöhen möchten."+"\n"+"Für das konto wählen sie die 1, für das Girokonto die 2 und für das Sparbuch die 3: ");
        int kWahl2 = waehleKonto.nextInt();
        System.out.println("Wählen sie den gewünschten überweisungsbetrag: ");
        double ueberWahl = waehleKonto.nextDouble();
        
        Konto[] konten = { konto1, gKonto, sKonto};
        Konto reduzierungsKonto = konten[kWahl1 - 1];
        Konto erhoehungsKonto = konten[kWahl2 - 1];
        reduzierungsKonto.ueberWeisen(erhoehungsKonto, ueberWahl);
        
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
V Memory Logik Problem/Denkblockade, bitte helft Java Basics - Anfänger-Themen 1
Z Erste Schritte Bitte helft mir dringend!! Java Basics - Anfänger-Themen 3
eLogic DownloadManager - Bitte helft mir Java Basics - Anfänger-Themen 7
P Bitte helft mir Java Basics - Anfänger-Themen 3
T Java Beispiel Bitte helft mir Java Basics - Anfänger-Themen 5
G ClassCastException.bitte helft mir Java Basics - Anfänger-Themen 3
S java.lang.NullPointerException - Bitte helft mir! Java Basics - Anfänger-Themen 5
S Bitte helft mir bei meiner matura (abitur) Java Basics - Anfänger-Themen 19
M kann java nicht installieren, bitte helft mir! Java Basics - Anfänger-Themen 4
F Bitte helft mir, Handy Emulator... Java Basics - Anfänger-Themen 12
L Helft mir bitte!!!! Java Basics - Anfänger-Themen 4
ineedhelpinjava OOP Bitte wichtig Java Basics - Anfänger-Themen 6
G Bitte meinen Account löschen Java Basics - Anfänger-Themen 1
D Bitte um Hilfe muss es schnellstmöglich erledigen Java Basics - Anfänger-Themen 15
I Bitte um Hilfe zu unterstehenden Code Java Basics - Anfänger-Themen 6
M Bitte um Hilfe bei 2DArrays Java Basics - Anfänger-Themen 8
D Abrechnung bitte um hilfe Java Basics - Anfänger-Themen 25
Vivien Bitte um Optimierungsvorschläge / Verbesserungsvorschläge / allgemeines Feedback Java Basics - Anfänger-Themen 8
J Doppelt verkette Liste ich bitte um Hilfe Java Basics - Anfänger-Themen 4
J Java List, Bitte um Hilfe Java Basics - Anfänger-Themen 15
J Java List, bitte um Hilfe Java Basics - Anfänger-Themen 3
pry bitte Hilfe beim Kreditrechner objektorientiert Java Basics - Anfänger-Themen 6
marcooooo einmal noch schnell hilfe bitte:/ Java Basics - Anfänger-Themen 2
I Methoden char Array Aufgabe (bitte hierbei um Hilfe) Java Basics - Anfänger-Themen 3
ZH1896ZH OOP Verstehe nicht was der Hinweis bedeutet, bitte um Hilfe! Java Basics - Anfänger-Themen 2
B BITTE!! Ich brauche dringende Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 17
S Bitte Hilfe zu Fehlermeldung am Handy Java Basics - Anfänger-Themen 2
I Do-While / Kalkulator / Bitte um Hilfe Java Basics - Anfänger-Themen 9
P Bitte Hinweise zu folgendem "Klassenproblem" Java Basics - Anfänger-Themen 3
M Bitte um Hilfe bei Quellcode (Rekursion) Java Basics - Anfänger-Themen 6
A Erste Schritte Bitte helfen sie mir diese Programm zu schreiben Java Basics - Anfänger-Themen 12
C Stack und Queue in Aktion (Bitte Hilfe für die Klausur) Java Basics - Anfänger-Themen 7
F (Eclipse) Beim importieren etwas fehlerhaft bitte um Hilfe :) Java Basics - Anfänger-Themen 3
B MVC Struktur mit mehreren Szenen - wer schaut mal bitte drüber? Java Basics - Anfänger-Themen 2
T Bitte um Hilfe Java Basics - Anfänger-Themen 9
D Arraylisten sortieren bitte um Hilfe Java Basics - Anfänger-Themen 4
P Erste Schritte Bitte ein paar Erklärungen zu meinem Code Java Basics - Anfänger-Themen 6
J Bitte Hilfe Java Basics - Anfänger-Themen 4
W FileReader - Bitte um Erklärung Java Basics - Anfänger-Themen 7
T Bitte um Hilfe bei Aufgabe: Long zahl = Long.parseLong(args [0]); Java Basics - Anfänger-Themen 3
J Bitte um Erklärung Java Basics - Anfänger-Themen 4
A GUI- Allgemeines Problem (Bitte helfen) Java Basics - Anfänger-Themen 15
D Bitte um Hilfe bei "error: package com.apple.eawt does not exist import com.apple.eawt.*;" Java Basics - Anfänger-Themen 1
C Polymorphie - Erklärung bitte Java Basics - Anfänger-Themen 5
M Quadrat zeichnen einfach bitte! Java Basics - Anfänger-Themen 2
F Bitte mal Zusammenhänge der Klassen erklären Java Basics - Anfänger-Themen 8
P <identifier> expected Fehler bitte um Hilfe Java Basics - Anfänger-Themen 5
J Kann mir bitte mal jemand diese Codes erklären? Java Basics - Anfänger-Themen 19
J Threading-Aufgabe. Totale Noob Fragen, aber bitte trotzdem beantworten ;) Java Basics - Anfänger-Themen 7
O Rundungsfehler bitte erklären! Java Basics - Anfänger-Themen 4
K NullPointerException wird geworfen, bitte um Hilfe! Java Basics - Anfänger-Themen 7
M Erklärung Code Mergesort Bitte Java Basics - Anfänger-Themen 3
N While Schleife Erklärung Bitte Java Basics - Anfänger-Themen 3
S Variablen Hilfe bitte Java Basics - Anfänger-Themen 6
T Unit tests fehlerhaft bitte um hiiiiilfe :D Java Basics - Anfänger-Themen 1
J Ich bitte DRINGEND um Hilfe!!! Java Basics - Anfänger-Themen 16
Q Importieren meiner Boundary? Bitte Hilfe Java Basics - Anfänger-Themen 3
T Eine kurze frage vor der prüfung bitte. Java Basics - Anfänger-Themen 5
CyberFish initialisieren, obwohl es gemacht wurde! Bitte um Hilfe Java Basics - Anfänger-Themen 10
H Bitte um Hilfe von Profis. Java Basics - Anfänger-Themen 5
S Klassen Formel zur Berechnung .... Bitte um Hilfe Java Basics - Anfänger-Themen 7
H Methoden Bitte um Erklärung der askString-Methode Java Basics - Anfänger-Themen 15
J Probleme bei kompilieren ... Bitte um Hilfe Java Basics - Anfänger-Themen 27
O Erste Schritte Aller Anfang ist schwer ! Bitte um Unterstützung Java Basics - Anfänger-Themen 6
G Bitte um Erklärung dieser einer Zeile Java Basics - Anfänger-Themen 5
P Bitte um hilfe bei einfachem Rechner Java Basics - Anfänger-Themen 7
B Bitte Hilfe für Funktionalität eines Sudokus Java Basics - Anfänger-Themen 8
G Brauche bitte Hilfe, bei umgekehrter Ausgabe!! Java Basics - Anfänger-Themen 6
G Input/Output FilenameFilter aber bitte keine Unterordner Java Basics - Anfänger-Themen 5
J Vererbung Anfänger Programm bitte um Kritik&Anregungen Java Basics - Anfänger-Themen 21
N Bitte Java Basics - Anfänger-Themen 2
D ???:L Bitte einmal mit drüber nachdenken Java Basics - Anfänger-Themen 5
R Vererbung Bitte um Erklärung - Instanzvariablen Java Basics - Anfänger-Themen 8
U finde fehler nicht! bitte um hilfe Java Basics - Anfänger-Themen 8
M Problem: code too large - bitte um Hilfe Java Basics - Anfänger-Themen 12
U Bitte Helfen kleines Spiel Java Basics - Anfänger-Themen 9
B Java und Javac funktionieren nicht - bitte hilfe Java Basics - Anfänger-Themen 5
3 Bitte um Hilfe bei Lösung einer Aufgabe Java Basics - Anfänger-Themen 16
M Aus CSV-Datei lesen und anzeigen (bitte schnell um Antwort) Java Basics - Anfänger-Themen 6
R Jave Problem... bitte um Hilfe!! Java Basics - Anfänger-Themen 6
S Java problem, bitte um hilfe! Java Basics - Anfänger-Themen 9
B Bitte um Hilfe es geht um Array + Punkte wie Dreieck,Fläche etc. Java Basics - Anfänger-Themen 12
C Bitte kurzes Feedback - JavaVersionen Java Basics - Anfänger-Themen 6
M Bitte um Verbesserungsvorschläge Java Basics - Anfänger-Themen 14
N verständniss problem bitte um hilfe Java Basics - Anfänger-Themen 3
L Brauche bitte dringend Hilfe für Klausur Java Basics - Anfänger-Themen 8
B Monat und Jahr bitte um Hilfe Java Basics - Anfänger-Themen 8
J Datentypen Generics - Bitte helfen !! Java Basics - Anfänger-Themen 9
A Dringende Bitte um Erklärungen zum besseren Verständnis Java Basics - Anfänger-Themen 4
D Java Problem bitte um hilfe Java Basics - Anfänger-Themen 4
S Datei-KopierProgramm ? CODE BITTE VERBESSERN Java Basics - Anfänger-Themen 11
D code erklären bitte ! Java Basics - Anfänger-Themen 15
Rudolf Verstehe das Ergebnis nicht - bitte erklären Java Basics - Anfänger-Themen 7
M Kann mir bitte jemand "java.util.ArrayList" erklären? Java Basics - Anfänger-Themen 5
M Bitte um Kontrolle meines Quelltextes Java Basics - Anfänger-Themen 10
J Leichte Java Anfängerfrage. Bitte schnelle Antwort. :) Java Basics - Anfänger-Themen 10
S BITTE UM HILFE: Unterschied Deklaration und Signatur einer Methode Java Basics - Anfänger-Themen 3
S BITTE UM HILFE HASHTABLE/import java.util.Hashtable in Ecplipse Java Basics - Anfänger-Themen 12
T Problem mit Aufgabe..bitte um Hilfe Java Basics - Anfänger-Themen 8
G Bitte um Erklärung Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben