Arrays und Bankkonten in Java
Ich bin versucht, zu schreiben eine einfache Bank-Account-Management-Programm, das das folgende tut:
Erstellt ein neues Konto mit Kontonummer und Balance genommen Nutzers gespeichert und in ein array
Wählt ein Konto (aus dem array)
Löscht die ausgewählten Kontos
Zurückziehen und mit der Einzahlung auf ein Konto ausgewählt haben.
Problem: ich verstehe nicht, was meine Fehler sind.
Ich habe versucht, mit verschiedenen Arten von arrays, die für die Kontonummer und balance zu speichern, aber ich habe nicht keine Antwort noch. Ich Suche im web und Stackoverflow für Referenzen, Dokumentationen, einfache Beispiele, aber konnten nicht finden, alle (die, die ich gefunden habe, verwenden einige Befehle und Dinge, die ich noch nicht gelernt, aber ich kann verstehen, wie Sie funktionieren). Ich bin ein Anfänger, ich bin immer noch lernen, und würden uns freuen, einige Ratschläge. Danke!
//Bank account class
public class account {
private int ANumber;
private double balance;
public account(double initialBalance, int accno) {
balance = initialBalance;
ANumber = accno;
}
public void deposit (double u_amm){
balance += u_amm;
}
public double withdraw(double amount) {
balance -= amount;
return amount;
}
public double getBalance() {
return balance;
}
public int getAccount(){
return ANumber;
}
}
- Und das ist die Haupt-Klasse
import java.util.Scanner;
//main class
public class bankmain {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//Menu starts from here
Scanner input = new Scanner(System.in);
System.out.println("Enter the option for the operation you need:");
System.out.println("****************************************************");
System.out.println("[ Options: ne - New Account de - Delete Account ]");
System.out.println("[ dp - Deposit wi - Withdraw ]");
System.out.println("[ se - Select Account ex - Quit ]");
System.out.println("****************************************************");
System.out.print("> "); //indicator for user input
String choice = input.next();
//Options
while(true){
if(choice == "ne"){
int nacc;
int bal;
int [][]array = new int[nacc][bal]; //Array for account and balance
System.out.print("Insert account number: ");
nacc =input.nextInt(); //-- Input nr for array insertion
System.out.print("Enter initial balance: ");
bal=input.nextInt(); //-- Input nr for array insertion
System.out.println("Current account: " + nacc + " " + "Balance " + bal);
break;
}
//account selection
if(choice.equals("se")){
System.out.println("Enter number of account to be selected: ");
//user input for account nr from array
System.out.println("Account closed.");
}
//close account
if(choice.equals("de")){
//array selected for closing
System.out.println("Account closed.");
}
//deposit
if(choice.equals("dp")){
System.out.print("Enter amount to deposit: ");
double amount = scan.nextDouble();
if(amount <= 0){
System.out.println("You must deposit an amount greater than 0.");
} else {
System.out.println("You have deposited " + (amount + account.getBalance()));
}
}
//withdrawal
if(choice.equals("wi")){
System.out.print("Enter amount to be withdrawn: ");
double amount = scan.nextDouble();
if (amount > account.balance()){
System.out.println("You can't withdraw that amount!");
} else if (amount <= account.balance()) {
account.withdraw(amount);
System.out.println("NewBalance = " + account.getBalance());
}
}
//quit
if(choice == "ex"){
System.exit(0);
}
} //end of menu loop
}//end of main
} //end of class
- Bekommst du eine Fehlermeldung? Was passiert und was würden Sie erwarten?
- Sie müssen erstellen Sie ein array von 'Konto' Objekte und weisen Sie jedem Konto, um neue Kunden und daher die erforderlichen Methoden für das jeweilige Konto. Auch "switch" - Anweisung anstelle verschachtelter wenn-dann-sonst-Anweisung. Sie sind immer noch das mischen der prozeduralen Programmierung mit der Objekt-orientierten Programmierung.
- Behalten Sie im Hinterkopf: Was würde passieren, wenn jemand sich zurückgezogen "-100.00"? Sein Konto aufladen! Dasselbe geht den anderen Weg mit Einzahlung.
- Machen, die Klassennamen mit Großbuchstaben beginnen und camel-case z.B. "Konto" oder "BankMain". Sind Sie sicher, dass Sie verwenden möchten
if(choice == "ex")
diese tests für Referenz-Gleichheit, nicht Wert. Was istaccount.balance()
ich sehe nicht ein balance-Methode, meinst dugetBalance()
? Wenn Sie Bearbeiten möchten, und fügen Sie die syntax-Fehler, Sie werden immer die Leute werden eher geneigt sein, zu helfen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein code war falsch auf vielen Ebenen - zunächst versuchen, die Arbeit auf Formatierung und Namensgebung, so dass Sie nicht lernen, bad habbits. Verwenden Sie keine kleinen Briefe für die Benennung von Klassen, versuchen, ganze Wörter, um zu beschreiben, Variablen und Felder, ähnlich wie in Account.class Beispiel:
Auch versuchen die gleiche Formatierung(zB. Leerzeichen nach der Klammer), die in alle code, so dass es einfacher für Sie zu Lesen.
Nun - was falsch war in Ihrer app:
Definieren, die richtige Halterung für Ihre Konten, d.h. HashMap gespeichert werden die Informationen über alle Konten und wird in der Lage sein, Sie zu finden, indem Sie Kontonummer.
HashMap<Integer, Account> accountMap = new HashMap<Integer, Account>()
;Diese sollte sich in Ihrem while-Schleife, wie Sie möchten, dass Ihre Benutzer mehrere Aufgaben. Sie konnte ommit die println ' s, aber dann müsste der Benutzer zurück zu der oben auf dem Bildschirm, um die Optionen zu sehen.
Sollte man nicht vergleichen von Strings mit '= = ' - operator, da es möglicherweise keine Rückkehr erwarteten Wert. Werfen Sie einen Blick auf: Wie Vergleiche ich strings in Java? oder Was ist der Unterschied zwischen == vs equals() in Java?. Für safty verwenden Sie Objekte equals statt, dh:
Gab es keine Stelle, wo du den account erstellt:
Sie nicht verwenden Sie if-else, nur if. Es sollte Aussehen, wie das (warum um zu überprüfen, wenn die Wahl ist, 'wi', wenn es bereits in 'ne'):
Wenn Ihr mit der Java-version >= 7 dann anstelle von if-else können Sie wechseln, um Zeichenketten miteinander zu vergleichen.
Gab es keine Benachrichtigung über die falsche option:
Sie nicht schließen Sie Ihren Scanner-Objekt. Dies spielt wirklich keine Rolle hier, da es in der main-Methode und wird in der Nähe, aber es ist eine Frage des guten habbits, um immer in der Nähe Ihrer streams, Daten, Quellen, etc wenn Sie fertig sind es zu benutzen:
Also den ganzen code kann wie folgt Aussehen:
Gibt es immer noch viel zu verbessern, d.h. die input-Validierung - aber diese sollten für den Anfang.
Du geschrieben hast den obigen code, aber es hat viele Fehler. Sie müssen lernen, die Die Grundlagen der Java-Programmierung.
Habe ich verändert Ihr Programm zu führen unterhalb Operationen :-
Account.java :
BankMain.java :
Habe ich getestet, code & es funktioniert Prima.
Ausgabe :