#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
также вызовет исключение, если синтаксический анализ не удался.