2014-03-30 2 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

정수를 텍스트로 변환하기 전에 상대방에게 초기 값을 주어야합니다.

0을 얻는 이유는 변수를 0으로 초기화 한 후에 즉시 사용하기 때문입니다. 그런 의미에서 if-then-else 패턴은 쓸모가 없습니다.

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에 대해서도 실수를 :


가능한 수정, 당신은 a, bc을 계산 후 코딩 및 을 쉽게하기 위해 switch-case 패턴을 사용하여 텍스트 값을 설정하는 것입니다 , 당신은 ComboBox1을 다시 사용했기 때문에 (나는 이것이 ComboBox3이되어야한다고 생각합니다.) switch-case 구조를 사용하면 코드가 더욱 우아 해집니다.


코드에 마지막 문제는 콤보 상자 (또는 사용자가 확인한 것과 다른 값)에 값이 입력되지 않은 경우 수행 할 작업입니다. 위에서 쓴 경우 값은 0 (알 수없는 값을 가진 ComboBox에 해당하는 값만 남음)입니다. 수행 할 작업을 결정하기 위해 케이스 defaut :을 추가 할 수 있습니다.

+0

충고에 대한 건배, 내가 잠을 자면 나머지 코드를 switch-case 문에 써서 왜 갑자기 if 문으로 갔는지 모르겠다. 너 : - / – user3425805

2

가지 적어 값 좀 새로운 조언을, 감사하고 초기화합니다 :

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

그리고 난 당신이 라인의 끝을 이동할 필요가 있다고 생각 귀하의 if/else-if 진술 :

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

나는 그것을 시도했지만 추가 된 값 대신에 모든 결과가 0이되도록해야한다. – user3425805

+0

왜해야합니까? 당신은 어디에서든지 가치를 얻지 못하고 있습니다. 당신은 단지 3 개의 지역 변수를 정의하고 있습니다. –

관련 문제