2014-01-29 70 views
-2

我試圖創建一個程序,以方便客戶配置文件,銀行賬戶,但存款和提款登記。面向對象的Java,arraylist

我現在的問題是,當索引變量得到錯誤的值時,我無法執行存款。它找不到代碼搜索並返回-1的值。

我的問題是,是否有人能幫助我,告訴我錯誤在哪裏。 我很新的Java編程慾望不接收消息得到的發言評論。我問,因爲我想了解更多。所以請提供提示和建議以及解釋。

預先感謝=)

Menu.java

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package bank; 

import java.util.Scanner; 

public class Menu { 

    int val = 0; 
    int user = 0; 
    Scanner user_input = new Scanner(System.in); 

    public void printMenu() { 
     while (val != 10) { 
     System.out.println("----------------------------"); 
     System.out.println("1. Lägg till kund"); 
     System.out.println("2. Redigera kunduppgifter"); 
     System.out.println("3. Ta bort kund"); 
     System.out.println("----------------------------"); 
     System.out.println("4. Nytt konto(befintlig kund)"); 
     System.out.println("5. Ta bort konto"); 
     System.out.println("----------------------------"); 
     System.out.println("6. Visa alla kunder"); 
     System.out.println("----------------------------"); 
     System.out.println("7. Insättning"); 
     System.out.println("8. Uttag"); 
     System.out.println(""); 
     System.out.print("Ditt val: "); 

     //Fångar upp användarens val 
     try{ 
      val = user_input.nextInt(); 
      if(val>10){ System.out.println("Meny finns inte"); } 
     }catch(java.util.InputMismatchException e){ 
      System.out.println("Felaktig inmatning"); 
     } 
     //Returnerar val 
     menuAction(val); 
     } 
    } 

    public void menuAction(int val){ 
     BankLogic BL = new BankLogic(); 


      //Switch som bytar metod beroende på val 
      switch (val) { 
       case 1: 
        System.out.print("Ange kundens förnamn: "); 
        String fName = user_input.next(); 
        System.out.print("Ange kundens efternamn: "); 
        String lName = user_input.next(); 
        System.out.print("Ange personnummer: "); 
        long perNR = user_input.nextLong(); 
        System.out.print("Ange startkapital: "); 
        int deposit = user_input.nextInt(); 

        String name = fName + " " + lName; 
        BL.addCustomer(name, perNR, deposit); 

        break; 

       case 2: 
        System.out.print("Ange personnummer: "); 
        long ID = user_input.nextLong(); 
        BL.infoCustomer(ID); 
        break; 

       case 3: 
        System.out.print("Ange kundens personnummer: "); 
        ID = user_input.nextLong(); 
        BL.removeCustomer(ID); 

        break; 

       case 4: 
        System.out.print("Ange kundens personnummer: "); 
        ID = user_input.nextLong(); 
        BL.addSavingsAccount(ID); 
        break; 

       case 5: 
        System.out.print("Ange kundens personnummer: "); 
        ID = user_input.nextLong(); 
        System.out.print("Ange det kontonr som skall tas bort: "); 
        int ACCNR = user_input.nextInt(); 
        BL.closeAccount(ID, ACCNR); 
        break; 

       case 6: 
        BL.infoBank(); 
        break; 

       case 7: 
        System.out.print("Ange kundens personnummer: "); 
        long pernr = user_input.nextLong(); 
        System.out.print("Ange kundens kontonummer: "); 
        int acc = user_input.nextInt(); 
        System.out.print("Ange kundens instättningsbelopp: "); 
        double amount = user_input.nextDouble();      
        BL.deposit(pernr, acc, amount); 
        break; 
       case 8: 
        System.out.print("Ange kundens personnummer: "); 
        ID = user_input.nextLong(); 
        System.out.print("Ange kontonr: "); 
        ACCNR = user_input.nextInt(); 
        System.out.print("Ange belopp: "); 
        amount = user_input.nextInt(); 

        BL.withdraw(ID, ACCNR, amount); 

        break; 

       case 9: 
        System.out.println("Loggar ut!"); 
        break; 
      } 
    } 

} 

Customer.java

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package bank; 

import java.util.ArrayList; 


//###### CUSTOMER ###### 
class Customer{ 
    String name; 
    long ID; 
    int accounts; 

    ArrayList<String> list = new ArrayList<String>(); 
    ArrayList<ArrayList<String>> fullList = new ArrayList<ArrayList<String>>(); 

    public boolean addCustomer(String name, long ID, int deposit){ 
     SavingsAccount SA = new SavingsAccount(); 
     String ACCNR = String.valueOf(SA.generateAccountNr()); 
     String id = String.valueOf(ID); 

     String Deposit = String.valueOf(deposit); 

     list.add(id); 
     list.add(name); 
     list.add(ACCNR); 
     list.add(Deposit); 
     fullList.add(list); 
     System.out.println("Kund lades till"); 

     return true; 
    } 

    public boolean editCustomer(String newName, long ID){ 
     int index = fullList.indexOf(ID); 
     fullList.get(index).set(3, newName); 
     return true; 
    } 
    public boolean deleteCustomer (long ID){ 
     int index = fullList.indexOf(ID); 
     fullList.remove(index); 

     return true; 
    } 

    public String showCustomer(long ID){ 
     int index = fullList.indexOf(ID); 

     System.out.println("Kontonummer \t Name \t Personnummer \t "); 
     for(ArrayList<String> r: fullList){ 
      System.out.print(r.get(index) + "\t"); 
     } 
     System.out.print(""); 
     return null; 
    } 

    public String showCustomers(){ 
     System.out.println("Kontonummer \t Name \t Personnummer \t "); 
     for(ArrayList<String> r : fullList){ 
      for(int i = 0; i < r.size(); i++){ 
       System.out.print(r.get(i) + "\t"); 
      } 
     } 
     return null; 
    } 


} 

SavingsAccount.java

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package bank; 

//###### SAVINGACCOUNT ###### 
class SavingsAccount { 
    int AccNr = 1000; 
    double saldo = 0; 
    int intrest = 2; 

    Customer CR = new Customer(); 

    public int generateAccountNr(){ 
     AccNr++; 
     return AccNr; 
    } 

    public void newSavingAcc(long ID){ 
     int index = CR.fullList.indexOf(ID); 

     String ACCNR = String.valueOf(generateAccountNr()); 
     CR.fullList.get(index).add(ACCNR); 
    } 

    public void deposit(long ID, int accNr, double amount){ 
     //String id = String.valueOf(ID); 

     int index = CR.fullList.indexOf("ID"); 
     System.out.print("Detta är INDEX: " + index); 

     saldo = saldo + amount; 

     String balance = String.valueOf(saldo); 
     CR.fullList.get(index).set(2, balance); 

    } 

    public void withdraw(long ID, int withdraw){ 

     int index = CR.fullList.indexOf(ID); 
     String id = String.valueOf(index); 

     saldo = saldo - withdraw; 

     String balance = String.valueOf(saldo); 
     CR.fullList.get(index).set(2, balance); 
    } 

    public double intrest (long ID, int saldo){ 
     int index = CR.fullList.indexOf(ID); 

     double decSaldo = saldo; 
     decSaldo = decSaldo * (intrest/100); 

     String stopBalance = String.valueOf(saldo); 
     CR.fullList.get(index).set(2, stopBalance); 

     return decSaldo; 
    } 

} 

BankLogic

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package bank; 


//###### BankLogiC###### 
public class BankLogic { 

    Customer CR = new Customer(); 
    SavingsAccount SA = new SavingsAccount(); 

    public String infoBank(){ 

     return null; 
    } 

    public boolean addCustomer(String name, long pNr, int deposit){ 
     CR.addCustomer(name, pNr, deposit); 
     CR.showCustomers(); 
     return true; 
    } 

    public String infoCustomer(long pNr){ 
     CR.showCustomer(pNr); 
     return null; 
    } 

    public boolean changeCustomerName(String name, long pNr){ 
     CR.editCustomer(name, pNr); 
     return true; 
    } 

    public String removeCustomer(long pNr){ 
     CR.deleteCustomer(pNr); 
     return null; 
    } 

    public int addSavingsAccount(long pNr){ 
     SA.newSavingAcc(pNr); 
     return 0; 
    } 

    public String infoAccount(long pNr, int accountId){ 

     return null; 
    } 

    public boolean deposit(long pNr, int accountId, double amount){ 
     SA.deposit(pNr, accountId, amount); 
     return true; 
    } 

    public boolean withdraw(long pNr, int accountId, double amount){ 


     return true; 
    } 

    public String closeAccount(long pNr, int accountId){ 

     return null; 
    } 
} 
+2

你在哪個班級遇到錯誤.4班難以找到問題 – Kick

+0

對不起,我的錯。在SavingsAccount,方法存款 – user2734182

+1

http://stackoverflow.com/help/mcve重點*最小* – alex

回答

2

變化,說

int index = CR.fullList.indexOf("ID"); 

int index = CR.fullList.indexOf(ID); 

否則,你要尋找的實際字母 「ID」 作爲標識符行。

+0

儘管發生了變化,但問題仍然存在 – user2734182

+0

您是否打算搜索「list」或「fullList」?我有點困惑,哪個是哪個。爲什麼'fullList'是一個'ArrayList >'? –

+0

我嘗試使列表多維。因此,我有一個數組列表 – user2734182