2015-11-03 72 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]。此外,在發佈代碼時,請注意格式化以便我們可以更輕鬆地閱讀和理解它。 –

相關問題