对于学校的PAT,我制作了默认构造函数和参数化构造函数,如下所示:
public class Client
{
//attributes
private String clientName;
private String clientPass;
private double currentBal;
private double savingsBal;
private boolean verify;
//default constructor
public Client()
{
clientName = "";
clientPass = "";
currentBal = 0.0;
savingsBal = 0.0;
verify = false;
}
//parameterised constructor
private Client(String username,String password,int accNum,
double curBal,double savBal, boolean ver)
{
clientName = username;
clientPass = password;
currentBal = curBal;
savingsBal = savBal;
verify = ver;
}
问题是,我在此之后创建了一些方法,为了使它们正常工作,它们需要更改最初在我的构造函数中为包中的所有不同表单分配的值。不幸的是,这似乎不起作用。无论我做什么,变量都只是暂时改变的。我是不是错过了什么?我是否应该在构造函数中做一些不同的事情,或者我是否需要在方法中做一些额外的事情来改变这一点。
非常感谢所有的帮助
编辑:这是我的一种方法:
public void newClient(String username,String password) throws IOException
{
//Sets username and password to user input and assigns the Client
account balances.
clientName = username;
clientPass = password;
savingsBal = (int)((Math.random()*100000000)) / 100.0;
currentBal = (int)((Math.random()*100000000)) / 100.0;
//Calls BufferedWriter to write a line to the text file with all
user information.
BufferedWriter bw = new BufferedWriter (new
FileWriter("ClientDatabase.txt",true));
bw.write(clientName+"_"+clientPass+"_"+currentBal+"_"+savingsBal);
bw.newLine();
//Closes BufferedWriter
bw.close();
}
//Verifies new Client via their username and password.
这样做很好,而且都写入了文本文件。但是,当我试图在任何其他JFrame中使用这些值时,它们似乎被重置为0或null。。。
在我看来,您实际上并没有使用在newClient方法中获得的值(用户名和密码)来使用参数化构造函数初始化新的Client对象;您只是将它们分配给一些全局值。确保您创建了一个新的Client实例,并让JFrame的其余部分引用该对象。