2013-05-28 36 views
-1

我遇到了一個問題,將一個對象添加到arraylist,使用類的方法拋出一個錯誤,我似乎無法找到問題。 該錯誤是Error = non-static variable db cannot be referenced from a static contexBankAccount程序,通過方法添加到arraylist

驅動程序代碼(有5例,但問題是在上述情況下斷裂所示最後一行。)

package bankaccount; 
import java.util.Random; 
public class DriverClass 
{ 
    Database db = new Database(); 
    Database Deleted = new Database(); 
    boolean done = false; 

    public static void main(String[] args) 
    { 
     while (!false) 
     { 
      int menu = IO.getInt("Please choose one of the following:"+ 
        "\n 1 to create new account"+ "\n 2 to delete an account"+ 
        "\n 3 to withdraw from an account"+"\n 4 to deposit to an account"+ 
        "\n 5 to list all customers"+"\n 6 to list all deleted customers"+ 
        "\n 7 to display single account "+"\n 8 to exit this program"); 

      switch(menu) 
      { 


      case 1: 
       //Create bankaccount object = creates new account 
       String LastName = IO.getString("Please type last name: "); 
       String FirstName = IO.getString("Please type first name: "); 
       Name n = new Name (LastName,FirstName); 

       //Create address object 
       String street = IO.getString("Please type your address: "); 
       String city = IO.getString("Please type your city: "); 
       String state = IO.getString("Please type your state: "); 
       String zipcode = IO.getString("Please type your zipcode: "); 
       Address addr = new Address (street,city,state,zipcode); 
       //Create Account number 
       Random randomGenerator = new Random(); 
       int randomInt = randomGenerator.nextInt(2000000000); 
       AccountNum accno = new AccountNum(randomInt); 
       //Create customer object 
       Customer c = new Customer(n,addr,accno); 
       //Create bankaccount object 
       double amt = IO.getDouble("Please type the opening account balance: "); 
       BankAccount b = new BankAccount(c, amt); 
       db.add(b); 
       break; 

&這裏是從數據庫類的代碼 - 調用add方法用於數組列表 package bankaccount;

import java.util.ArrayList; 

public class Database 
{ 
    int index; 
    boolean found; 
    ArrayList<BankAccount> list; 
    BankAccount acc; 

    Database() 
    { 
     ArrayList<BankAccount> list = new ArrayList<BankAccount>(); 
    } 

    public void add(BankAccount b) 
    { 
     list.add(b); 
    } 

    BankAccount remove (int i) 
    { 
     return list.remove(i); 
    } 

    BankAccount getaccount() 
    { 
     return acc; 
    } 

    ArrayList getlist() 
    { 
     return list; 
    } 

    int getindex() 
    { 
     return index; 
    } 

    boolean inlist() 
    { 
     return found; 
    } 

    void search (String key) 
    { 
     found = false; 
     int i = 0; 
     //int.length = list.size(); 

     while (i < list.size() && !found) 
     { 
      BankAccount b = list.get(i); 
      if (key.equals(b.getcustomer())) 
      { 
       acc = b; found = true; index = i; 
      } 
      else 
      { 
       i++; 
      } 
     } 
    } 
} 
+1

什麼是錯誤 – PSR

+0

錯誤=非靜態變量db不能從靜態上下文中引用。欣賞任何推動正確的方向! – ArronG

+0

檢查了這一點 http://stackoverflow.com/questions/5671610/add-object-to-array-list-get-error-when-try-add-obect-to-arraylist 的http:// stackoverflow.com/questions/3527137/correct-way-to-add-objects-to-an-arraylist – 2013-05-28 02:51:33

回答

0

在開關塊的末尾你做出參考db對象,它是不static,但是你在一個靜態上下文(public **static** void main)。簡單的解決辦法是行

Database db = new Database(); 

改變

static Database db = new Database(); 

你可能需要改變其他兩個變量爲好。

+0

非常感謝! – ArronG