public void setSavingsBal(String q) throws FileNotFoundException, IOException
{
try
{
BufferedReader in = new BufferedReader(new FileReader("logininf.txt"));
String l = "";
while ((l = in.readLine())!=null)
{
String [] var = l.split("#");
if(var[0].equals(q))
{
System.out.println(var[2]);
savingsBal = Double.parseDouble(var[2]);
}
}
}
以上,savingsBal的值为20
public double getSavingsBal()
{
System.out.println(savingsBal);
return savingsBal;
}
但是当我检索它时,它给出的值为0
private void btnGetBalanceActionPerformed(java.awt.event.ActionEvent evt) {
Client cl1 = new Client();
double balance;
balance = cl1.getSavingsBal();
似乎变量在原始set方法之后没有更新。
答案 0 :(得分:2)
您在btnGetBalanceActionPerformed方法中创建了一个全新的Client对象,并且此对象与任何现有Client都没有关联。因此,即使您在现有Client对象中的某处更改了余额,也不会在您在此处创建的新值cl1中看到此状态更改。解决方案:不要创建新的Client对象,而是使用现有的Client对象。如何取决于未显示的代码,因为您需要以某种方式获取并使用对现有代码的引用。
所以而不是:
private void btnGetBalanceActionPerformed(java.awt.event.ActionEvent evt) {
Client cl1 = new Client();
double balance;
balance = cl1.getSavingsBal();
做的:
private void btnGetBalanceActionPerformed(java.awt.event.ActionEvent evt) {
// Client cl1 = new Client();
double balance;
balance = existingClientReference.getSavingsBal();
请注意,您将希望避免尝试使用静态变量解决此问题。