Ich möchte um Hilfe für das folgende Problem bitten. Ich versuche, ein einfaches Banksystem in Java zu bauen. Die Idee ist, neue Kunden mit einem aktuellen Konto zu erstellen. Nach dem Öffnen eines Kunden ist es möglich, auch Sparkonten anzulegen. Der Kunde muss die Pass-ID angeben. Mit der Pass-ID prüft das Programm, ob der Kunde in der Datenbank existiert oder nicht.Java Banking Programm
Bisher habe ich 2 Klassen Bank und Kunde und 2 Formulare Haupt- und Neukundenformular.
Das Problem ist, wenn ein Kunde erstellt und in die Datenbank (ArrayList) hinzugefügt wird, wenn ich einen neuen Kunden erstellen und eine Pass-ID eingeben bereits existiert das Programm immer noch mit einem falschen Wert zurück. auch wenn der Passwert in der Datenbank und der neue Passwert gleich sind.
Hier sind die Codes:
Bank.java
import java.util.ArrayList;
public class Bank {
//variables
private ArrayList<Customer> customers = new ArrayList<Customer>(); //holds the customers of bank
private double interestRate=2.5;
private double chargeFee=0.5;
//check if the customer exist in the database by using passport ID
public boolean passportExists(String pID){
for(Customer c : customers){
if(c.getPassport() == pID){
return true;
}
System.out.println(c.getPassport() + " = "+pID);
}
return false;
}
//display customers array
public void DisplayCustomers(){
for(Customer c : customers){
System.out.println("name: "+c.getName()+" , passport: "+ c.getPassport());
}
}
//add new customer to the customers array
public void addCustomer(Customer customer) {
customers.add(customer);
}
//get number of customers stored in the customers array
public int getNumberOfCustomers(){
return customers.size();
}
Customer.java
import java.util.*;
public class Customer {
//variables
private String firstName, lastName, passportID;
//constructor
Customer(String cFName, String cLName, String cpID){
firstName=cFName;
lastName = cLName;
passportID = cpID;
}
//get functions
public String getName() { return firstName+" "+lastName; }
public String getPassport() { return passportID; }
}
Hauptformular
import java.util.*;
import javax.swing.*;
public class main extends javax.swing.JFrame {
private Bank bank;
public main() {
initComponents();
setLocationRelativeTo(null);
bank = new Bank();
}
private void jMenu2MouseClicked(java.awt.event.MouseEvent evt) {
newcustomerform nform = new newcustomerform(this,true,bank);
nform.setVisible(true);
}
newcustomerform
import javax.swing.JOptionPane;
import java.util.*;
public class newcustomerform extends javax.swing.JDialog {
//declare classes and variables
private Bank bank;
private Customer customer;
public newcustomerform(java.awt.Frame parent, boolean modal,Bank bank) {
super(parent, modal);
initComponents();
setLocationRelativeTo(parent);
this.bank = bank;
}
private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) {
//declare variables
StringBuilder warnings = new StringBuilder(); //warnings array
String firstName = "", lastName = "", passportID = "";
//get values from the fields
if (fNameInput.getText().isEmpty()) { warnings.append("First Name\n");}
else { firstName = fNameInput.getText(); }
if (lNameInput.getText().isEmpty()) { warnings.append("Last Name\n");}
else { lastName = lNameInput.getText(); }
if (pIDInput.getText().isEmpty()) { warnings.append("Passport ID\n");}
else { passportID = pIDInput.getText(); }
//display warning
if (warnings.length() > 0) {
JOptionPane.showMessageDialog(this, "Required: \n"+warnings.toString(), "Input Warnings", JOptionPane.WARNING_MESSAGE);
}
else{
//check if the bank has any customer
//if the bank has customer
if (bank.getNumberOfCustomers()!=0){
//check if the customer exist by using passport id
//if customer does not exist
if (bank.passportExists(passportID)==false){
System.out.println("does not exist");
customer = new Customer(firstName, lastName, passportID); //save new customer
bank.addCustomer(customer); //add new customers to the customers array
this.dispose(); //close form
}
//if customer exist
else{
System.out.println("exist");
}
}
//if the bank does not have customer
else{
customer = new Customer(firstName, lastName, passportID);
bank.addCustomer(customer);
this.dispose();
}
//display info
bank.DisplayCustomers();
System.out.println("Number of customers: "+bank.getNumberOfCustomers());
}
}
Die beiden Zahlen sind die gleichen, aber ich habe "false" Antwort. Es sollte "wahr" sein.
Danke für jede Hilfe!
verwenden Sie vergleichen String falsch. – ItamarG3
Ja, Itamar Green ist richtig und Ihr Code-Stil sehr schlecht (zum Beispiel: newcustomerform), lesen Sie http://www.oracle.com/technetwork/java/codeconventions-150003.pdf –
Hallo. Danke für die schnellen Antworten! Ich habe gerade angefangen, Java zu benutzen und um ehrlich zu sein, habe ich nicht die grundlegenden Sachen überprüft, da ich andere Sprachen benutze und alle von ihnen benutzen ==. – bontoo