2015-11-03 61 views
-2
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当我调用一个方法来返回一个值,它重置回0

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(); 

好像变量在原始设置方法后没有更新。

+2

它看起来像您检索的方法,您创建一个新的'客户'对象,然后调用get。何时调用set方法?除非该变量是静态的,否则该实例的变量将为0。 – HannahMitt

+0

它在set方法之前以前面的形式被调用。对不起,如果我不正确地解释我自己我很新的编码 –

回答

2

您正在btnGetBalanceActionPerformed方法中创建一个全新的Client对象,并且此对象与任何现有客户端都没有连接。因此,即使您在现有客户端对象的某个位置更改了余额,此状态更改也不会在您在此处创建的新状态cl1中看到。解决方案:不要创建新的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(); 

注意,你会希望避免试图用静态变量来解决这个问题。

+0

它不工作,也许是因为我在调用的价值,当我在一个不同的比当我使用set方法? –

+0

@ShailenDesai:我并不是想表达自己的看法,但是现在根本没有办法根据你发布的内容猜出为什么它不能正常工作。希望你不要盲目地复制我的代码,并期望它能够工作,因为它不是为了传达这样一个想法,即你必须使用自己的Client变量(一个非静态类字段),无论你有什么命名它。 –

+0

@ShailenDesai:为了得到更完整的答案,你需要展示更多相关的代码,最好是[mcve]。此外,在发布代码时,请注意格式化以便我们可以更轻松地阅读和理解它。 –

相关问题