2016-11-05 1 views
-2

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()); 
     } 
    } 

ich erhalte das Ergebnis: enter image description here

Die beiden Zahlen sind die gleichen, aber ich habe "false" Antwort. Es sollte "wahr" sein.

Danke für jede Hilfe!

+3

verwenden Sie vergleichen String falsch. – ItamarG3

+0

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 –

+0

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

Antwort

0

Das Problem ergibt sich aus der Art, wie Sie die Pässe vergleichen. Statt dessen:

if(c.getPassport() == pID){ 
    return true; 
} 

Verwendung dieses:

if(c.getPassport().equals(pID)){ 
    return true; 
} 
0

Java vergleicht Strings mit equals, nicht ==. Sie sollten if (c.getPassport().equals(pID))