我试图用一种方法设置数组中对象的特定值。
public class BankAccount
{
private String name;
//constructor
public BankAccount(String firstName, String LastName)
{
name = firstName + " " + lastName;
}
public String getName()
{
return name;
}
以上是我的BankAccount
班,还有另一个名为BankAccountList
的班:
public class BankAccountList {
public static void main(String args[]){
BankAccount bankAccount[] = new BankAccount[2];
bankAccount[1] = giveName("MR", "Travis");
}
public static void giveName (String firstName, lastName){
}
}
如何使用以下BankAccount[1]
方法将giveName()
中的对象名称设置为“ Travis先生”?我不知道要使用给定参数在giveName
中放入什么。任何提示将不胜感激。
答案 0 :(得分:4)
您的$(this).closest("form").next(".comments").hide();
方法应返回类型giveName
:
BankAccount
修改:
仅声明public static BankAccount giveName (String firstName, String lastName){
return new BankAccount(firstName, lastName);
}
不会填充数组中的任何条目(根据其他语言的经验,您可能希望这样做)。数组最初将为空,并且有多种填充方法:
在循环中,您可以:
new BankAccount[]
构造函数BankAccount
(如上面的示例所示)与大多数编程决策一样,此选择主要是个人喜好。对于具有2个字符串字段的简单DTO,委派给另一种方法可能会过大。
对于需要验证的更复杂的DTO,委托另一种方法可以将验证逻辑封装在易于测试的单个位置。
答案 1 :(得分:3)
这里有几件事值得一提。
首先,您似乎对静态和动态之间的差异没有完全的了解。这是可以理解的,因为即使我了解它是如何工作的,我现在仍然很难理解它。您的BankAccountList
类具有main方法,该方法从静态标准main方法开始。您的bankAccount
数组是在此main方法中定义的,这意味着它不存在于整个类中,仅存在于正在运行的main方法中。
然后,您要为列表中的银行帐户命名。在这里,您创建了另一个静态方法,该方法对您的main方法中的内容一无所知,并且不包含任何可以为其提供参数的对象。换句话说,您现在拥有的空函数无法为银行帐户设置任何参数,因为该方法中不存在银行帐户。
我建议使giveName
方法动态化(这意味着只删除static关键字),然后将该方法移到BankAccount
类中。然后,您将有效地使用名称的get和set方法,它们是动态的,这意味着它对于该类的每个对象实例均有效。之后,可以首先引用数组中的对象,然后直接在该特定对象上调用giveName()
方法,该方法将设置名称:
public class BankAccount
{
private String name;
//constructor
public BankAccount(String firstName, String LastName)
{
name = firstName + " " + lastName;
}
public String getName()
{
return name;
}
public void giveName (String firstName, String lastName){
name = firstName + " " + lastName;
}
和:
public class BankAccountList {
public static void main(String args[]){
BankAccount bankAccount[] = new BankAccount[2];
bankAccount[1].giveName("MR", "Travis");
}
}
更新:
我现在注意到另一件事。创建数组的行: BankAccount bankAccount [] =新的BankAccount [2];
这不会创建填充数组,而是会创建一个空数组。换句话说,您尚未创建带有银行帐户的列表,而是创建了可以保存银行帐户的列表。您必须先创建一个银行帐户,然后才能为其命名。
BankAccount bankAccount[] = new BankAccount[2];
bankAccount[1] = new BankAccount("MR", "Travis");
现在,您的构造函数在创建时已经具有用于给帐户命名的参数。因此,现在您实际上并不需要gemName方法。除非您以后想要更改它,否则:
bankAccount[1].giveName("MRS", "Davis");
答案 2 :(得分:2)
您实际上不需要使用giveName
方法,您可以这样做:
bankAccount[1] = new BankAccount("MR", "Travis");
但是,如果您确实需要使用giveName
方法来执行此操作,则可以这样做:
// change signature to return `BankAccount` object
public static BankAccount giveName (String firstName, String lastName){
return new BankAccount(firstName, lastName);
}
并这样称呼它:bankAccount[1] = giveName("MR", "Travis");
如果您需要giveName
作为void
的返回类型,那么您需要传递数组以将BankAccount
添加到方法内部,并将位置添加到该方法中。像这样:
// change in order to signature receive an array of `BankAccount`s and the position where it will be added
public static void giveName (String firstName, String lastName, BankAccount[] bankAccounts, int position) {
bankAccounts[position] = new BankAccount(firstName, lastName);
}
然后这样称呼:giveName("MR", "Travis", bankAccount, 1);
附加说明:
0
开始,而不是1
,因此您可能要考虑从0
而不是1
添加银行帐户,如下所示:giveName
在BankAccountList
类中,就是这种情况。否则,请继续KjetilNordin's answer。 bankAccount[0] = giveName("MR", "Travis");
答案 3 :(得分:1)
您定义了一个包含 BankAccount 对象的数组,因此要使用 giveName() 函数向其中添加元素,您需要进行修改该功能如下:
public class BankAccountList {
public static void main(String args[]){
BankAccount bankAccount[] = new BankAccount[2];
bankAccount[1] = giveName("MR", "Travis");
}
public static BankAccount giveName (String p_firstName,String p_lastName){
return new BankAccount(p_firstName, p_lastName)
}
}
答案 4 :(得分:1)
您需要set
方法!
将此添加到BankAccount类:
public void setName(String firstName, String lastName) {
this.name = firstName + " " + lastName;
}
,因此您应该调用setName而不是GiveName。像这样:
bankAccount[1].setName(String firstName, String lastName)
另一件事,我建议您在对象的构造函数中使用set方法:
//constructor
public BankAccount(String firstName, String LastName)
{
setName(String firstName, String lastName);
}