java - 使用另一个类的 getter 方法中的值

标签 java inheritance arraylist

我花了一段时间尝试不同的事情,试图让这个家庭作业正常工作,但我无法弄清楚,我认为这是最后一部分,我正盯着我的脸。当我输入名字和姓氏并按“添加帐户”,然后确认它应该将一个帐户添加到数组列表中,然后当我按“帐户数”时,它应该显示总共有多少个帐户,但它一直显示 0 .

enter image description here

基本帐户列表

import java.util.*;


public class BasicAccountList
{
    private ArrayList < BasicAccount> accounts;

    /**
     * Create a BasicAccount. 
     */
    public BasicAccountList()
    {
        accounts = new ArrayList < BasicAccount>();
    }

    /**
     * Add an account to this account list.
     * @param account the accountobject to be added
     */
    public void addAccount(BasicAccount account)
    {
        accounts.add(account);
    }

    /**
     * Return the number of accounts currently held.
     * 
     * @return the number of accounts
     */
    public int getNumberOfAccounts()
    {
        return accounts.size();
    }

}

基本帐户

public class BasicAccount
{
    private Name name;
    private String accountNumber;

    /**
     * Constructor for objects of class Account.
     * The number of pointsHeld should should be set to
     * the supplied value.
     * 
     * @param fName The Account Holder's first name 
     * @param lName The Account Holder's last name
     * @param acctNumber The account number
     */
    public BasicAccount(String fName, String lName, String acctNumber)
    {

        name = new Name (fName, lName);
        accountNumber = acctNumber; 
    }

    // accessors

    /**
     * Get the Account Holder's first name
     * 
     * @return the Account Holder's first name
     */
    public String getFirstName()
    {
        return name.getFirst();
    }

    /**
     * Get the Account Holder's last name
     * 
     * @return the Account Holder's last name
     */
    public String getLastName()
    {
        return name.getLast();
    }

    /**
     * Get the Account Holder's account Number
     * 
     * @return the Account Holder's account number
     */
    public String getAccountNumber()
    {
        return accountNumber;
    }


    public void printAccountDetails()
    {
        System.out.println( toString());
    }     

    /**
     * Return details of an account as a formated string
     * 
     * @return the account details of a particular account
     */

    public String toString()    
    {
        String output = accountNumber + " ";
        output = output + name.toString() + "\n";      
        return output;
    }

    // mutators         
    /**
     * Change the first name
     * 
     * @param fName the new first name
     * 
     */
    public void setFirstName(String fName)
    {
        name.setFirst (fName);
    }

    /**
     * Change the last name
     * 
     * @param lName the new last name
     * 
     */
    public void setLastName(String lName)
    {
        name.setLast(lName);
    }


} // end Account class

GUI类中的相关代码

/**
 * Write a description of class HW4GUI here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*;

public class HW4GUI extends JFrame implements ActionListener         
{
    private BasicAccountList accounts; 
    private JPanel buttonPanel; 
    private JButton jbtAdd;
    private JButton jbtNumber;
    private JButton jbtQuit;
    private JLabel jlbAcctNo;
    private  JLabel jlbFName;
    private JLabel jlbLName;
    private JTextField jtfAcctNo;
    private  JTextField jtfFName;
    private  JTextField jtfLName;
    private int nextAcctNo;
    private JPanel textPanel;

    public HW4GUI ()
    {
        makeFrame();
        showFrame();
        nextAcctNo = 1001;


    }
    public void actionPerformed(ActionEvent ae) 
    {

        BasicAccountList accountlist = new BasicAccountList ();
        String item = ae.getActionCommand();
        String firstNameText = jtfFName.getText();
        String lastNameText = jtfLName.getText();
        String finalAccountNumber = jtfAcctNo.getText();

        if(item.equals("No. of Accounts"))
        {
            jbtAdd.setEnabled(false);
            jbtNumber.setText ("Clear");
            jlbAcctNo.setText("No. of accounts:");


            //accounts.getNumberOfAccounts();

            BasicAccount newaccount = new BasicAccount(firstNameText, lastNameText, finalAccountNumber);

            String accountTotal = Integer.toString (accountlist.getNumberOfAccounts());

            jtfAcctNo.setText (accountTotal);


        }


    }

最佳答案

您在 actionPerformed 方法中创建另一个 BasicAccountList。这意味着,每次单击按钮时,都会生成一个新的 BasicAccountList 并执行此列表上的所有操作,而不是 HW4GUI 所持有的操作。

关于java - 使用另一个类的 getter 方法中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29812122/

相关文章:

java - 在本地主机上启动 Tomcat v6.0 服务器失败

javascript - 哪个继承类称为函数?

java - java.util.List 的 contains 方法线程安全吗?

java - 有什么方法可以将一个条目添加到具有来自 int 变量的自定义位置的 Java 数组列表中吗?

java - 你能同时要求多种类型吗?

java - 小/烦人的错误 - 与读/写/分析文本文件有关

java - 在 Java 中使用序列化的最佳方法是什么?

java - 什么是NullPointerException,我该如何解决?

java - 通过接受字符串使用 for 循环打印模式

java - 当一个对象都继承自同一个类时,如何以一种简单的方式将它们转换为另一个对象