2013-10-13 3 views
2

эй, ребята, я просто изучаю C# в школе, и мне трудно понять, как я могу использовать переменную вне оператора if, когда эта переменная уже объявленный внутри оператора if .. показывает, что моя программа выглядит как ........ я должен использовать переменную «factor» за пределами statemants if, потому что она является частью уравнения, которое мне нужно для школьного задания ..если я отсутствующий что-нибудь или вам нужна дополнительная информация, плз, не стесняйтесь сказать мнекак использовать переменную за пределами оператора if, которая уже объявлена ​​внутри оператора if

public caloriesCalculator() 
     { 
      InitializeComponent(); 
     } 

     private void calculate_Click(object sender, EventArgs e) 
     { 
      double kilos; 
      double pounds; 
      int factor; 
      double totalcalories; 
      pounds = double.Parse(lbsTxt.Text); 
      kilos = pounds * 0.45; 
      kilosTxt.Text = kilos.ToString(); 


      { 

       if (maleRadio.Checked && activeRadio.Checked) 
       { 
        factor = 15; 
       } 

       if (femaleRadio.Checked && activeRadio.Checked) 
       { 
        factor = 12; 
       } 

       if (maleRadio.Checked && inactiveRadio.Checked) 
       { 
        factor = 13; 
       } 

       if (femaleRadio.Checked && inactiveRadio.Checked) 
       { 
        factor = 10; 
       } 
      } 
     } 
+1

Удалите дополнительные {} перед вашим, если и в последний раз, если. C# имеет blockscope для переменных, а {} обозначает, что блок 'factor' не определен, когда вы достигаете оператора if ... – rene

+0

hi я удалил дополнительный {} и все еще получаю ошибку сборки, когда я пытаюсь сделать свою формулу, которая «totalcalories = factor * kilos;», он имеет подчеркнутый фактор и говорит, что использование локального переменного «фактора» –

ответ

2

не ясно: Но вы говорите, что это не компилируется? Вам необходимо назначить значение (по умолчанию) перед тем, как войти в оператор if.

int factor = 15; 
+0

Это звучит правильно. Даже если вы знаете, что все четыре комбинации радиообъектов покрыты, компилятор не понимает этого и должен дать вам ошибку компиляции. – EventHorizon

+0

Извините, не могли бы вы объяснить это мне более подробно? и нет, он не компилирует и не присваивает значение, что вы имеете в виду? –

+0

переменные должны быть инициализированы до их ссылки. Просто объявление переменной не инициализирует его. вам нужно присвоить значение переменной, прежде чем вы сможете ее использовать. –

1

Нужно инициализировать переменные, но если вы хотите вернуть номер, вам нужно сделать это с помощью типа int. Пустота означает возврат ничего. Попробуйте использовать метод int для этого и верните переменную.

I.E. частное ИНТ radioChecker()

if(this happens) { 
factor = 15; 
return factor; 
} 

и т.д. и т.п.

затем поместить radioChecker() внутри вашей пустоты, и вы можете иметь разные вещи случаются на основе того, что она возвращает.

Смежные вопросы