【问题标题】:Switch statement using text box within forms使用表单中的文本框切换语句
【发布时间】:2019-03-14 19:58:43
【问题描述】:

我正在构建一个表单,该表单从文本框中获取输入数字,然后将获取输入的数字,并在另一个文本框中显示等效的罗马数字。

我的表格:

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

这是我不断收到错误代码的地方。 “开关(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;


        }

【问题讨论】:

  • 你需要分配numberInput
  • 旁注:将所有罗马数字放入一个数组中:string[] romans = new[] {"I", "II", ..., "X"}; 并寻址它而不是switch..caseoutputTextBox.Text = romans[numberInput - 1];

标签: c# switch-statement


【解决方案1】:

因为您的变量尚未分配int numberInput;,因此出现错误。您说输入来自 TextBox,在这种情况下,假设 textbox1 是您的 TextBox 控件实例名称,请执行以下操作

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

【讨论】:

    【解决方案2】:

    如果解析不成功,Convert.ToInt32 可能会抛出异常。另一种方法是 Int.Parse:

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

    或者更好

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

    【讨论】:

    • 你不是要推荐int.TryParse吗?如果解析不成功,int.Parse 也会抛出异常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多