-1

我在将对象添加到数组列表时遇到问题,使用类中的方法会引发错误,我似乎找不到问题。错误是Error = non-static variable db cannot be referenced from a static contex

驱动程序代码(有 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;

& 这里是来自数据库类的代码——调用数组列表包bankaccount的add方法;

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++;
            }
        }
    } 
}
4

1 回答 1

0

在 switch 块的末尾,您引用了dbnot 的对象static,但是您处于静态上下文 ( public **static** void main) 中。简单的解决方案是更改线路

Database db = new Database();

static Database db = new Database();

您可能还需要更改其他两个变量。

于 2013-05-28T02:58:42.793 回答