Оператор переключения с использованием текстового поля в формах

#c# #switch-statement

#c# #оператор переключения

Вопрос:

Я создаю форму, которая принимает введенное число из текстового поля, а затем принимает введенное число и отображает эквивалент римской цифры в другом текстовом поле.

Моя форма:

введите описание изображения здесь

 private void convertButton_Click(object sender, EventArgs e)
    {
        int numberInput;
        switch (numberInput)
  

Здесь я продолжаю получать код ошибки. «switch (NumberInput)» рассматривается как локальная переменная без назначения. Как мне назначить его, чтобы он мог получать доступ ко всем целым числам регистра?

         {
            case 1:
                outputTextBox.Text = "I";
                break;
            case 2:
                outputTextBox.Text = "II";
                break;
            case 3:
                outputTextBox.Text = "III";
                break;
            case 4:
                outputTextBox.Text = "IV";
                break;
            case 5:
                outputTextBox.Text = "V";
                break;
            case 6:
                outputTextBox.Text = "VI";
                break;
            case 7:
                outputTextBox.Text = "VII";
                break;
            case 8:
                outputTextBox.Text = "VIII";
                break;
            case 9:
                outputTextBox.Text = "IX";
                break;
            case 10:
                outputTextBox.Text = "X";
                break;
            default:
                MessageBox.Show("Please enter and number between 1 and 10. Thank you!");
                break;


        }
  

Комментарии:

1. вам нужно назначить numberInput

2. Примечание: поместите все римские цифры в массив: string[] romans = new[] {"I", "II", ..., "X"}; и адресуйте его вместо switch..case : outputTextBox.Text = romans[numberInput - 1];

Ответ №1:

Причина в том, что ваша переменная еще не назначена int numberInput; и поэтому ошибка. Вы сказали, что ввод поступает из текстового поля, в этом случае сделайте, как показано ниже, предполагая, что textbox1 это ваше имя экземпляра элемента управления TextBox

 int numberInput = Convert.ToInt32(this.textbox1.Text.Trim());
  

Ответ №2:

Преобразовать.ToInt32 может выдать исключение, если синтаксический анализ не удался. Другой метод заключается в Int.Parse:

 int numberInput = int.Parse(textbox1.Text.Trim());
  

или еще лучше

 int numberInput;
if(int.TryParse(textbox1.Text.Trim(), out numberInput))
  {
      switch (numberInput) 
        ...

  }
  

Комментарии:

1. Вы не хотите рекомендовать int.TryParse ? int.Parse также вызовет исключение, если синтаксический анализ не удался.