java - 修改对象的字段

标签 java object

我正在尝试创建代码来更改多个帐户引用的客户对象的名字和姓氏字段。即每个客户可以拥有多个帐户。但是,似乎仅更改了一个帐户的名称,并且该更改并未出现在连接到同一客户的其他帐户中。也许有人可以查明错误。

参见下面的代码:

主要方法摘录

System.out.println("Enter the number of the account that you would like to modify:");
            number=keyboard.nextLong();
            keyboard.nextLine();
            firstName=null;
            lastName=null;

            try{
                if(aBank.getAccount(number)!=null){
                        System.out.println("Account information is listed below");
                        System.out.println(aBank.getAccount(number).toString());
                        System.out.println("Modify first name y or n");
                         answer=keyboard.nextLine();
                            if(answer.equals("Y")||answer.equals("y")){
                                System.out.println("Enter first name:");
                                firstName=keyboard.nextLine();


                            }
                        System.out.println("Modify last name y or n");
                        answer=keyboard.nextLine();
                            if(answer.equals("Y")|| answer.equals("y")){
                                System.out.println("Enter last name:");
                                lastName=keyboard.nextLine();

                            }

                        aBank.changeName(number,firstName,lastName);

                    }

                else{
                    System.out.println("Account not found");
                }
            }
            catch(Exception e){
                System.out.println("Unable to process request.\n" + e.getMessage());
            }

适用的银行类方法:

public Account getAccount(long accountNumber ) throws Exception  {
    boolean found=false;
    for(int i=0;i<accounts.size();i++){
        if(accounts.get(i).getAccountNumber().compareTo(accountNumber)==0){
            found=true;


            return accounts.get(i).clone();
        }



        }

public void changeName(Long accountNumber, String firstName, String lastName) throws Exception{


    if (getAccount(accountNumber)!=null){
        accounts.get(accounts.indexOf(getAccount(accountNumber))).getCustomer().modifyName(firstName, lastName);
    }
    else{
        throw new Exception("Account not found");

    }

适用的帐户类方法

private Account (Account a){
    //copy constructor
    this.accountNumber=a.accountNumber;
    this.startBalance=a.startBalance;
    this.customer=a.customer;
    this.trans=a.trans;

}


public Customer getCustomer() {

    return this.customer.clone();

}
public void modifyName(String firstName, String lastName){
    if(firstName!=null){
        customer.setFirstName(firstName);
    }

    if(lastName!=null){
        customer.setLastName(lastName);
    }
}

适用的客户类别方法

private Customer(Customer c){
    //copy constructor
    this.customerNumber=c.customerNumber;
    this.socialSecurityNo=c.socialSecurityNo;
    this.firstName=c.firstName;
    this.lastName=c.lastName;
}

最佳答案

看起来您的代码根本不应该工作,因为您克隆了 Customer 对象,然后修改了克隆。帐户也是如此。

一些简化可能有助于调试。大部分代码可能可以使用标准集合来简化,而不是迭代和使用compareTo。

逻辑也有点奇怪 - 如果任务是修改客户详细信息,那么为什么要从帐号开始,然后去找客户?

if (getAccount(accountNumber)!=null){
        accounts.get(accounts.indexOf(getAccount(accountNumber))).getCustomer().modifyName(firstName, lastName);
    }
    else{
        throw new Exception("Account not found");
    }

可以简化为:

getAccount(accountNumber).getCustomer().setName(firstName, lastName);

如果未找到该项目,getAccount 和 getCustomer 会引发异常。

getAccount 方法可以简化为:

public Account getAccount(long accountNumber )  {
        return accounts.get(accountNumber )
    }

(几乎不值得有一个方法!)如果帐户是 Map<Long,Account>

关于java - 修改对象的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6363337/

相关文章:

Java - 以特定方式切割字符串

java - 每次我更改标签时标签 fragment 获取数据

javascript - XMLHttpRequest 对象

javascript - 将(n)个键从对象数组中分离到一个带有键名的数组中

java - session 室可用性应用程序。如何处理数据库中的保留日期(Hibernate、H2)

java - Collection.sort 排序时出现奇怪的错误

java - 从原始 @Transactional 方法调用 @Transactional 方法会导致同一类中出现回滚问题

c# - 在 C# 中跟踪所有对象引用

javascript - 如何让javascript对象的一个​​成员引用同一对象的另一个成员?

java - Android java解析Json从url到对象列表