2014-03-30 37 views
0

我想知道我在做什麼錯誤,因爲我想製作一個菜單,需要在預定義的值中一起計算三個不同的課程,但是我似乎在做轉換錯誤,因爲我似乎無法使其正確工作。C#使用未分配的局部變量(int)

int a, b, c; 
    textBox4.Text = (a + b + c).ToString(); 
    if (comboBox1.Text == "Tzatziki") 
    { 
    a = 35; 
    } 
    else if (comboBox1.Text == "Carpaccio") 
    { 
    a = 40; 
    } 
    else if (comboBox1.Text == "Bruscetta") 
    { 
    a = 30; 
    } 
    else if (comboBox1.Text == "Shrimp Cocktail") 
    { 
    a = 40; 
    } 
    if (comboBox2.Text == "Sirloin") 
    { 
    b = 225; 
    } 
    else if (comboBox2.Text == "Lamb") 
    { 
    b = 195; 
    } 
    else if (comboBox2.Text == "Salmon") 
    { 
    b = 170; 
    } 
    else if (comboBox2.Text == "Veggy") 
    { 
    b = 100; 
    } 
    if (comboBox1.Text == "Chocolate Cake") 
    { 
    c = 45; 
    } 
    else if (comboBox1.Text == "Pancakes") 
    { 
    c = 35; 
    } 
    else if (comboBox1.Text == "Waffles") 
    { 
    c = 40; 
    } 
    else if (comboBox1.Text == "Sundae") 
    { 
    c = 38; 
    } 

} 

會的建議,還挺新的C#編程:)

+0

請開始構建您的代碼... –

+2

使用開關盒..使您的生活更輕鬆。 – Zhafur

回答

1

在可以將整數轉換爲其文本對手,你需要給它一個初始值。

你爲什麼得到零的原因是因爲在你初始化變量(用零)後,你立即使用它們。在那個意義上,if-then-else模式是無用的。


一個可能的解決辦法是使用switch-case模式來緩解編碼和後你計算abc,設置文本值:

int a = 0, b = 0, c = 0; 
switch(comboBox1.Text) { 
    case "Tzatziki" : 
     a = 35; 
     break; 
    case "Carpaccio" : 
     a = 40; 
     break; 
    case "Bruscetta" : 
     a = 30; 
     break; 
    case "Shrimp Cocktail" : 
     a = 40; 
     break; 
} 
switch(comboBox2.Text) { 
    case "Sirloin" : 
     b = 225; 
     break; 
    case "Lamb" : 
     b = 195; 
     break; 
    case "Salmon" : 
     b = 170; 
     break; 
    case "Veggy" : 
     b = 100; 
     break; 
} 
switch(comboBox3.Text) { 
    case "Chocolate Cake" : 
     c = 45; 
     break; 
    case "Pancakes" : 
    c = 35; 
     break; 
    case "Waffles" : 
     c = 40; 
     break; 
    case "Sundae" : 
     c = 38; 
     break; 
} 
textBox4.Text = (a + b + c).ToString(); 

你可能爲c取得甚至錯誤,因爲您再次使用ComboBox1(我預計這應該是ComboBox3。通過使用開關結構,代碼變得更加優雅


代碼的最後一個問題是如果組合框中沒有輸入任何值(或與您檢查的值不同),該怎麼辦。在我上面寫的情況下,值將保持0(僅對應於具有未知值的ComboBox的值)。您可以添加一個defaut :的案例,以決定當時要做什麼。

+0

爲建議而歡呼,我會做這個,在我睡了一會之後,將其餘的代碼寫在switch-case語句中,所以不知道爲什麼我突然去了如果語句無論如何 - 猜這就是缺乏睡眠你: - / – user3425805

2

給欣賞價值,以你的變量並進行初始化:

int a = 0, b = 0, c = 0; 

我想你需要移動的這一行結束您的if/else-if報表:

textBox4.Text = (a + b + c).ToString(); 
+0

我嘗試過,但只會導致所有結果都是0,而不是增加的值,它應該是。 – user3425805

+0

爲什麼它應該是?你沒有從任何地方獲得價值。你只需定義三個局部變量。 –