2013-10-05 65 views
0

當我輸入文本框時,我想要它添加數字,而不是如果我鍵入(例如)12,然後再次單擊存款,它只顯示12。我認爲這是因爲它似乎認爲它的0加12每次。東西似乎沒有正確實例化。我認爲。任何人都可以指出我做錯了嗎?試圖添加方法,相信有東西沒有實例化

namespace WindowsFormsApplication2 
{ 
public partial class Form1 : Form 
{ 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void btn_deposit_Click(object sender, EventArgs e) 
    { 
     double input; 
     input = double.Parse((putin.Text)); 
     BankAccount a = new BankAccount(input); 
     aMtBox.Text = a.AccountBalance.ToString(); 
    } 
} 

public class BankAccount 
{ 
    private double num1; 
    private double accountBalance; 

    public BankAccount(double input) 
    { 
     num1 = input; 
     Deposit(); 
    } 

    public double Num1 
    { 
     set {num1 = value;} 
     get {return num1;}} 

    public double AccountBalance 
    { 
     get {return accountBalance;} 
     set {accountBalance = value;}} 

    public void Deposit() 
    { 
     accountBalance = accountBalance + num1; 
    } 
} 
} 

回答

5

你創建的每一個按鈕被點擊時BankAccount一個新的實例 - 所以accountBalance將是0.0(類型double的字段的默認值)。你是如何期望它「知道」以前的平衡?

完全可能的是,您的表單中應該有一個實例類型爲BankAccount的變量。您還應該考慮BankAccount中的num1實例變量的含義。這個名字當然不會告訴我們任何事情。感覺它實際上應該只是Deposit方法的一個參數。

此外,對於貨幣值,您不應使用double - 使用decimal或使用整數類型來表示分數(或便士,或其他)。你不想進入正常的二進制浮點問題。

在這一點上,你的方法將成爲類似:

// I hate the VS-generated event names, but... 
private void btn_deposit_Click(object sender, EventArgs e) 
{ 
    // TODO: Use decimal.TryParse, and handle invalid input cleanly. 
    decimal newDeposit = decimal.Parse(putin.Text); 
    account.Deposit(newDeposit); 
    aMtBox.Text = account.AccountBalance.ToString(); 
} 
+0

我想我的是NUM1曾經的念頭應該作爲用戶輸入的輸入。我對編程非常陌生。很多概念都超出了我的視野,而且由於我只編程了4個月,我一直在努力讓事情保持基本,並且進展緩慢。 – Zoro

0

你需要有一個的BankAccount場出了與形式初始化的形式。應該是這個樣子:

public partial class Form1 : Form 
{ 
    private BankAccount account; 
    public Form1() 
    { 
     InitializeComponent(); 
     account = new BankAccount(0); 
    } 

    private void btn_Deposit_Click(object sender, EventArgs e) 
    { 
     account.Num1 = double.Parse((putin.Text)); 
     account.Deposit(); 
     aMtBox.Text = account.AccountBalance.ToString(); 
    } 

} 

在一個側面說明,輸入要進行驗證,並BankAccount類重構的東西,如:

class BankAccount 
{ 
    private double num1; 
    private double accountBalance; 

    public BankAccount(double startingBalance) 
    { 
     accountBalance = startingBalance; 
    } 

    public double AccountBalance 
    { 
     get {return accountBalance;} 
     set {accountBalance = value;} 
    } 

    public void Deposit(double depositAmount) 
    { 
     accountBalance += depositAmount; 
    } 
} 
相關問題