2017-08-28 90 views
1

我想編程一個簡單的計算器爲學校的任務,但我有問題,計算器總是崩潰,如果我離開textBox1 & textBox2爲空。相反,我希望有一個文字出現在標籤2,如果其中一個或兩個是空:c# - 如果number1和/或number2爲空出現的文本的命令行

private void button1_Click(object sender, EventArgs e) 
{ 
    Zahl1 = Convert.ToDouble(textBox1.Text); 
    Zahl2 = Convert.ToDouble(textBox2.Text); 
    label2.Text = label2.Text.Replace(".", ","); 

    if (String.IsNullOrEmpty(textBox1.Text) | String.IsNullOrEmpty(textBox2.Text)) 
    { 
     label2.Text = "Bitte 2 Zahlen eingeben"; 
    } 
} 
+1

崩潰?你能提供確切的錯誤類型和錯誤信息嗎?它發生了什麼? –

+0

給textBox1.Text和textBox2.Text默認值「0」並嘗試 – imsome1

+0

如果條件先使用然後分配 – Musab

回答

0

應用會拋出異常在這兩條線路之一,如果他們中任何一個空:

Zahl1 = Convert.ToDouble(textBox1.Text); 
Zahl2 = Convert.ToDouble(textBox2.Text); 

你應該檢查文本框是否爲空之前將它們的值轉換爲decimal。所以,試試這樣:

private void button1_Click(object sender, EventArgs e) 
{ 
    if (String.IsNullOrEmpty(textBox1.Text) || String.IsNullOrEmpty(textBox2.Text)) 
    { 
     label2.Text = "Bitte 2 Zahlen eingeben"; 
    } 
    else 
    { 
     Zahl1 = Convert.ToDouble(textBox1.Text); 
     Zahl2 = Convert.ToDouble(textBox2.Text); 
     label2.Text = label2.Text.Replace(".", ","); 

    } 
} 

此外,你應該檢查,如果該文本可以轉換爲雙。如果用戶在textBox1中寫入abc,在textBox2中寫入3,會怎麼樣?你會得到一個異常。

因此,增加額外的檢查,像這樣:

double z1; 
double z2; 
if (String.IsNullOrEmpty(textBox1.Text) || String.IsNullOrEmpty(textBox2.Text)) 
{ 
    label2.Text = "Bitte 2 Zahlen eingeben"; 
} 
else if (!double.TryParse(textBox1.Text, out z1) || !double.TryParse(textBox2.Text, out z2)) 
{ 
    label2.Text = "Das sind keine korekt Zahlen! :)"; 
} 
else 
{ 
    //rest of your code 
    Zahl1 = Convert.ToDouble(textBox1.Text); 
    //etc.... 
} 
相關問題