Programm für Geld-Abheben

Status
Nicht offen für weitere Antworten.
Hallo liebe Community,
ich habe heute mein erstes Programm aufgestellt, aber leider kann es einen eingelesenen String nicht mit dem Passwort "a" vergleichen.
Code:
import java.util.Scanner;

public class KontoApp {
  public static void main(String[] args) {
    int kontostand = 5000;
    String p = "a";
    System.out.println("Bitte geben Sie Ihr Passwort ein");
    Scanner a = new Scanner (System.in);
    String x = a.nextLine();
    if (p==x) {
      geldAbheben(kontostand);
    }
    else {
      System.out.println("Falsche Eingabe.\nSie haben noch zwei Chancen");
      Scanner b = new Scanner (System.in);
      String y = b.nextLine();
      if (p==y) {
        geldAbheben(kontostand);
      }
      else { 
        System.out.println("Falsche Eingabe.\nSie haben noch eine Chance");
        Scanner c = new Scanner (System.in);
        String z = c.nextLine();
        if (p==z) {
          geldAbheben(kontostand);
        }
        else System.out.println("Das Konto ist jetzt gesperrt");
      }
    }
  }
  static void geldAbheben (int x) {
    System.out.println("Richtige Eingabe\nAuf Ihrem Konto sind " + x + "Euro gutgeschrieben. Wie viel möchten Sie abheben?");
    Scanner d = new Scanner (System.in);
    int m = d.nextInt();
    System.out.println("Auf Ihrem Konto sind jetzt " + (m-x) + " Euro gutgeschrieben.");
  }
}
Außerdem würde ich gerne noch eine Methode falscheEingabe() erstellen für den else-Fall, aber was sind denn dabei die Parameter? Ist sonst alles richtig oder welche Verbesserungsvorschläge könnt ihr mir geben?
Wäre sehr dankbar für eure Hilfe.
MfG
 

Fragender

Bekanntes Mitglied
du kannst es auch wie folgt machen

Code:
String a = JOptionPane.showInputDialog("Gib dein Passwort ein!");
 

Schandro

Top Contributor
Strings vergleicht man mit
x.equals(y)
nicht mit
x == y


Das erste vergleicht das, was in den Strings jeweils drinsteht, das "==" vergleicht jedoch nur ob es die exaxt SELBE String instanz ist
 

max56

Mitglied
Wenn das Passwort nur aus Zahlen besteht kannst du den String auch in einen Integer Umwandeln und dann vergleichen ...
 

Schandro

Top Contributor
und was soll das bringen? Das er dann noch extra nen try/catch Block drumrumbauen muss um etwaige NumberFormatExceptions aufzufangen? Quark
 

max56

Mitglied
Ja aber ich fände das einfacher da ich auch neu in Java eingestiegen bin und das rech tunkompliziert geht...
Klar ist das andere einfacher wenn man es kennt...
 

hdi

Top Contributor
zu deiner anderen Frage:

[HIGHLIGHT="Java"]Scanner a = new Scanner (System.in);
int versuche = 3;
String eingabe;
boolean okay = true;
while(!(eingabe = a.nextLine()).equals(a)){
System.out.println("Falsche Eingabe. Sie haben noch "+eingabe+" Versuche");
if(--versuche == 0){
okay = false;
break;
}
}
if(okay){
geldAbheben(kontostand);
}
else{
System.out.println("Sie haben Ihre Versuche aufgebraucht. Konto gesperrt.");
}[/HIGHLIGHT]

Das ist zwar jetzt nicht in eine Methode ausgelagert, weil sie ja nur diese
Meldung beinhalten würde. Kannst du aber natürlich auch noch machen.
 
Zuletzt bearbeitet:
Ich danke euch allen für eure hilfreichen Beiträge.
@Schandro: x.equals(y) genau das hat mir gefehlt, dankeschön.
@hdi: an eine while-Anweisung, die den Schreibaufwand senken könnte, habe ich auch gedacht, aber ich wusste nicht wie ich es anstellen könnte. Deiner Empfehlung bin ich auch nachgegangen, und zwar so:

[highlight=Java]import java.util.Scanner;

public class KontoApp {
public static void main(String[] args) {
int versuche = 3;
int kontostand = 5000;
String eingabe = "java";
boolean okay = true;
System.out.println("Bitte geben Sie Ihr Passwort ein");
Scanner a = new Scanner (System.in);

while(!(eingabe = a.nextLine()).equals(a)){ //???
System.out.println("Falsche Eingabe. Sie haben noch "+eingabe+" Versuche");
if(--versuche == 0){
okay = false;
break;
}
}
if(okay){
geldAbheben(kontostand);
}

else{
System.out.println("Sie haben Ihre Versuche aufgebraucht. Konto gesperrt.");
}
}
static void geldAbheben (int x) {
System.out.println("Auf Ihrem Konto sind " + x + " Euro gutgeschrieben. Wie viel möchten Sie abheben?");
Scanner c = new Scanner (System.in);
int m = c.nextInt();
int n = x-m;
if (n >= 0) System.out.println("Auf Ihrem Konto sind jetzt " + n + " Euro gutgeschrieben.");
else System.out.println("Sie haben nicht so viel Geld auf Ihrem Konto.");
}
}[/highlight]
Das klappt aber nicht, z.B. kommt "Falsche Eingabe. Sie haben noch f Versuche
Sie haben Ihre Versuche aufgebraucht. Konto gesperrt." raus wenn ich f eingebe.

Noch eine allg. Frage: Ich habe das Programm noch erweitert, soll ich meine Lösung hier eingeben oder kann es sein, dass sich niemand dafür interessieren würde?
Danke noch mals.
 

Schandro

Top Contributor
in Zeile 12 vergleichst du ein String-Object mit eine Scanner-Object, obwohl du dieses eigetlich mit nem Passwort vergleichen willst (welches noch nirgendswo existiert)
In zeile 13 willst du wahrscheinlich die Variable versuche und nicht die Variable eingabe ausgeben...
 

hdi

Top Contributor
ja sry dafür war ungetestet hingerotzt. Paar Flüchtigkeitsfehler, Schandro hat sie
schon erwähnt.

Also versuche statt eingabe, und dein passwort "p" oder was statt dem a in
der while-bedingung.
 
Ok danke, ich möchte euch das funktionierende und erweiterte Programm jetzt zeigen, denn ich habe noch eine Idee und wenn mir jemand helfen könnte es in die Realität um zu setzen, wäre es genial, denn es hat etwas mit objektorientierter Programmierung zu tun, was sehr zentral in Java ist.

[highlight=Java]
import java.util.Scanner;

public class KontoAppMitWhileSchleife {
public static void main(String[] args) {
int versuche = 3;
int kontostand = 5000;
String passwort = "java";
boolean okay = true;
System.out.println("Bitte geben Sie Ihr Passwort ein");
Scanner a = new Scanner (System.in);

while(!(passwort = a.nextLine()).equals("java")) {
versuche--;
if (versuche > 1) System.out.println("Falsche Eingabe. Sie haben noch " + versuche + " Versuche");
else if (versuche == 1) System.out.println("Falsche Eingabe. Sie haben noch " + versuche + " Versuch");
else if (versuche == 0) {
okay = false;
break;
}
}

if (okay) aktion(kontostand, passwort);
else System.out.println("Sie haben Ihre Versuche aufgebraucht. Ihr Konto ist jetzt gesperrt.");

}
static void aktion (int x, String y) {
System.out.println("Wenn Sie Geld abheben möchten drücken Sie die 0. Wenn Sie Geld einzahlen möchten drücken Sie die 1.\nWenn Sie Ihr Passwort ändern möchten drücken Sie die 2.");
Scanner b = new Scanner (System.in);
int z = b.nextInt();
if (z == 0) geldAbheben(x);
else if (z == 1) geldEinzahlen(x);
else if (z == 2) System.out.println("Ihr neues Passwort lautet: " + passwortÄnderung(y));
else {
System.out.println("Falsche Eingabe!");
aktion(x, y);
}
}
static void geldAbheben (int x) {
System.out.println("Auf Ihrem Konto sind " + x + " Euro gutgeschrieben. Wie viel möchten Sie abheben?");
Scanner c = new Scanner (System.in);
int m = c.nextInt();
int n = x-m;
if (n >= 0) System.out.println("Auf Ihrem Konto sind jetzt " + n + " Euro gutgeschrieben.");
else {
System.out.println("Sie haben nicht so viel Geld auf Ihrem Konto!");
geldAbheben(x);
}
}
static void geldEinzahlen (int x) {
System.out.println("Auf Ihrem Konto sind " + x + " Euro gutgeschrieben. Wie viel möchten Sie einzahlen?");
Scanner c = new Scanner (System.in);
int m = c.nextInt();
int n = x+m;
System.out.println("Auf Ihrem Konto sind jetzt " + n + " Euro gutgeschrieben.");;
}
static String passwortÄnderung (String x) {
System.out.println("Bitte geben Sie jetzt Ihr neues Passwort ein");
Scanner c = new Scanner (System.in);
String m = c.nextLine();
x = m;
return x;
}
}[/highlight]

Ich möchte jetzt statt des vorgegebenen "kontostand" und "passwort" zwei Kunden erstellen, wobei der eine dem anderen Geld überweist. Kann mir jemand einen Anhaltspunkt geben wo und wie ich das machen kann? Ich sitze schon seit Stunden daran und komme nicht weiter.
Noch zwei zusätzliche Fragen:
1. while(!(passwort = a.nextLine()).equals("java"))
Diese Zeile scheint mir sehr mysteriös zu sein, denn wenn ich statt "java" in der Klammer passwort eingebe funktioniert es nicht. Ach ich verstehe diese Zeile eigentlich allgemein nicht.
2. Wie und wo kann ich dafür sorgen, dass das neue Passwort aus der Methode passwortÄnderung (String x) das Passwort aus der main-Methode überschreibt ohne das gesamte Programm durcheinander zu bringen?
 

Geeeee

Bekanntes Mitglied
Überleg dir was deine "Kunden" so machen / können müssen.
Laut deinem Code brauchst du ja in etwa Folgendes (was ich versuche so einfach wie möglich zu halten):
Membervariablen:
- Name (Zur Unterscheidung der Kunden / denke mal bei so einem einfachen Beispiel brauch man da nix kryptisches oder IDs nehmen)
- Passwort (das "private" Passwort des Kunden)
- Kontostand (initialier Wert)
Funktionen:
- geldAbholen(betrag) (von Bank)
- geldEinzahlen(betrag) (zur Bank)
- geldUeberweisen(andererKunde, betrag)
+ gegebenenfalls getter/setter für die Membervariablen
 

hdi

Top Contributor
Was gee versucht zu sagen:
Du vermischt das Objekt-orientierte mit Prozeduralem.
D.h. du solltest eine eigene Klasse "Konto" machen, mit den von gee genannten
Membervariablen und Methoden.
Diese Klasse enthält keine main-Methode!

Und dann eine andere Klasse "TransactionTest" oder so, und diese hat eine main.
In dieser main erstellst du 2 Konten und du kannst ja darauf die Methoden aufrufen.
D.h. eine Überweisung solltest du hinkriegen, kannste ja statisch machen:

[HIGHLIGHT="Java"]private static boolean ueberweise(Konto von, Konto zu, double betrag){
boolean valid = (von.getKontostand() >= betrag);
if(valid){
von.hebeAb(betrag);
zu.zahleEin(betrag);
}
return valid;
}[/HIGHLIGHT]
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
NadimArazi Wie kann ich eine collision detection für die Paddles in meinem Pong Programm hinzufügen? Java Basics - Anfänger-Themen 4
nevel Programm für die Summer der Zahlen 1- 1ß Java Basics - Anfänger-Themen 12
C Was ist nötig für ein Java-Programm auf Server für Website Java Basics - Anfänger-Themen 18
P Wie für EIN Java Programm von 64bit Java (=Standard) auf 32bit Java Installation (Windows) umschalten? Java Basics - Anfänger-Themen 6
x-tshainge Schleife für ein Würfel Programm Java Basics - Anfänger-Themen 2
KingDLetsPlay Basics für ein Programm Java Basics - Anfänger-Themen 6
G Warum funktioniert das Programm für negative Eingabe nicht? Java Basics - Anfänger-Themen 3
B Brauch Hilfe für Java Programm Java Basics - Anfänger-Themen 12
D Code für ein Summen Programm Java Basics - Anfänger-Themen 11
A Icon für Programm festlegen Java Basics - Anfänger-Themen 2
A Eclipse - Java-Programm exportieren für Ubuntu TLS 10 Java Basics - Anfänger-Themen 9
M Script für Externes Programm Java Basics - Anfänger-Themen 6
B Klassen Programm für einen Auto Boardcomputer Java Basics - Anfänger-Themen 20
D Design-Tipps für neues Programm (Excel-Charts-...) Java Basics - Anfänger-Themen 3
B Grafische Oberfläche für Java-Programm Java Basics - Anfänger-Themen 5
J Programm für Teilbarkeit Java Basics - Anfänger-Themen 10
T Zugangsdaten für Datenbank in Java-Programm speichern? Java Basics - Anfänger-Themen 5
M Programm für 1337-speak Java Basics - Anfänger-Themen 5
S KeyListener für einfaches Programm Java Basics - Anfänger-Themen 3
M Sammlung von Anfängerfragen für mein erstes Programm Java Basics - Anfänger-Themen 15
C Java programm mit Datenbank für Anfänger Java Basics - Anfänger-Themen 21
J Webserver für Java Programm Java Basics - Anfänger-Themen 6
K Kommandozeile für Programm Java Basics - Anfänger-Themen 2
F kleines Programm für ungerade oder gerade Zahl. Java Basics - Anfänger-Themen 18
M Datei mit Java für Programm öffnen Java Basics - Anfänger-Themen 10
M Programm für alle zugänglich machen Java Basics - Anfänger-Themen 15
S Programm für Kameralicht des Handys Java Basics - Anfänger-Themen 4
J programm für kleinste potenz Java Basics - Anfänger-Themen 10
T Kopierschutz für Programm Java Basics - Anfänger-Themen 11
C Frage für Programm mit Dauerschleife im Hintergrund Java Basics - Anfänger-Themen 11
G Hilfe bei GUI für Java Programm erstellen Java Basics - Anfänger-Themen 2
J Nachhilfe oder Ähnliches gesucht ! Programm für Berchng. ! Java Basics - Anfänger-Themen 7
J Programm für interaktive Berechnung von Temperaturverläufen Java Basics - Anfänger-Themen 9
D Programm für Widestandsberechnung mit Zeichnung Java Basics - Anfänger-Themen 25
M Programm für trigonometrische Berechnungen in 84 Fällen. Java Basics - Anfänger-Themen 12
D Programm für Operation anhalten Java Basics - Anfänger-Themen 6
M Java programm für Mac Java Basics - Anfänger-Themen 61
K Java Programm als Standard Programm für bestimmte Dateitypen Java Basics - Anfänger-Themen 13
L Suche Verbesserungsvorschläge für mein erstes Programm Java Basics - Anfänger-Themen 34
J Eigenes Symbol für Java Programm Java Basics - Anfänger-Themen 3
B Ist Java das richtige für folgendes Programm! Java Basics - Anfänger-Themen 2
K Java Programm für BMI Java Basics - Anfänger-Themen 4
A (java) programm für div plattformen Java Basics - Anfänger-Themen 9
G Tastenkombinationen für Programm definieren Java Basics - Anfänger-Themen 6
J Programm für Prozentrechnen Java Basics - Anfänger-Themen 5
A "Hello World"-Programm läuft nicht Java Basics - Anfänger-Themen 16
J Delay erzeugen, ohne Programm zu blockieren Java Basics - Anfänger-Themen 7
Ü Dead Code im Programm? Java Basics - Anfänger-Themen 13
M Java Mail Programm Java Basics - Anfänger-Themen 4
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
M Mini Jar-Programm Java Basics - Anfänger-Themen 51
G JTable Listselectionlistener friert das Programm ein Java Basics - Anfänger-Themen 8
M Das Programm stellt nichts dar Java Basics - Anfänger-Themen 2
K Programm compilierbar aber nicht ausführbar... Java Basics - Anfänger-Themen 21
Z Programm Ideen Java Basics - Anfänger-Themen 8
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
P Wie kann ich beispielsweise Speicherstände eines Spiels DAUERHAFT in meinem Programm speichern? Java Basics - Anfänger-Themen 3
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
T Programm stürzt ab Java Basics - Anfänger-Themen 40
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
G Programm läuft durch, ohne Eingabe aus dem Chat abzuwarten Java Basics - Anfänger-Themen 4
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
N Interpreter-Fehler Compiler zeigt keine Fehler an, aber das Programm läuft nicht (BlueJ) Java Basics - Anfänger-Themen 2
D Java Programm mit Batch-Datei starten Java Basics - Anfänger-Themen 32
Jul1n4tor Programm mit Scanner und If-Statements Java Basics - Anfänger-Themen 2
D Wie sehe ich ein Java-Programm? Java Basics - Anfänger-Themen 27
K Ist das Programm schlecht bzw. schlampig programmiert ? Java Basics - Anfänger-Themen 9
Zrebna Kann Java Programm nicht in Konsole ausführen Java Basics - Anfänger-Themen 1
K Warum läuft das Programm nicht(bzw. nicht richtig) Java Basics - Anfänger-Themen 4
M Von Eclipse zum richtigen Programm Java Basics - Anfänger-Themen 1
nbergmann IntelliJ: Wie lade ich ein fertiges Programm aus dem Lehrbuch? Java Basics - Anfänger-Themen 26
D Anfängerfrage zu meinem Programm. Java Basics - Anfänger-Themen 15
nbergmann Eclipse: Lehrbuch-Programm startet nicht Java Basics - Anfänger-Themen 22
I Jetty starten von Programm (Main) Java Basics - Anfänger-Themen 27
Kydo Programm Beschreibung Java Basics - Anfänger-Themen 3
nbergmann Eclipse: Lehrbuch-Programm startet nicht Java Basics - Anfänger-Themen 7
T Java FXML selbes Fenster verschiedene Stellen im Programm Java Basics - Anfänger-Themen 5
frager2345 Programm erstellen ohne Autoboxing und Unboxing Java Basics - Anfänger-Themen 13
D JAVA Programm schreiben Java Basics - Anfänger-Themen 46
P exportiertes Programm funktioniert nur teilweise Java Basics - Anfänger-Themen 7
J Mein Programm läuft bei der ersten Eingabe nicht mehr weiter, woran liegt das? Java Basics - Anfänger-Themen 6
M Wo hält das Programm an? Java Basics - Anfänger-Themen 11
J Mein Java Programm lässt sich nicht mehr bearbeiten Java Basics - Anfänger-Themen 2
Fugover Programm funktioniert nicht Java Basics - Anfänger-Themen 11
Fugover Kopfrechnen-Programm Java Basics - Anfänger-Themen 6
sserio Wieso funktioniert mein Programm nicht Java Basics - Anfänger-Themen 2
sserio Größtes Palindrom-Produkt Programm funktioniert nur halb Java Basics - Anfänger-Themen 23
J selbst erstellte Datei mit Programm öffnen Java Basics - Anfänger-Themen 10
F nach Methode Programm nicht beenden Java Basics - Anfänger-Themen 9
A wie kann ich es in meinem Programm rein tun Java Basics - Anfänger-Themen 8
S Fehler beim Programm Java Basics - Anfänger-Themen 2
Jose05 Fehler im Programm feststellen Java Basics - Anfänger-Themen 2
F Kann mir jemand kurz dieses Programm erklären? Java Basics - Anfänger-Themen 22
I Programm erkennt nicht an das Array zurückgegeben wird trotz Initialisierung *einfach* Java Basics - Anfänger-Themen 9
J Nach dem Exportieren funktioniert mein Programm nicht mehr Java Basics - Anfänger-Themen 8
P Mein Programm wird zwar erfolgreich Compiliert, öffnet sich aber nicht Java Basics - Anfänger-Themen 6
J Kann ich mein Programm so schreiben? Java Basics - Anfänger-Themen 4
A Lotto Programm Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben