转换输入框

本文关键字:输入 转换 | 更新日期: 2023-09-27 18:32:42

我正在尝试将输入框转换为 Int32,但它不起作用,有人知道如何解决这个问题吗?

private void button1_Click(object sender, EventArgs e)
{
    int[] tab = null;
    for (int i = 0; i < numericUpDown1.Value; ++i)
    {
        tab[i] = Convert.ToInt32(Interaction.InputBox("Value", "Array")); 
       // Error here
    }
    textBox1.Text = "Plus petit: " + Smaller(tab).ToString();         
    //textBox1.Text = "Plus grand: " + result.ToString();
}
private int Smaller(int[] array)
{
    var result = array[0];
    foreach (int tabs in array)
    {
        if (result > tabs)
        {
            result = tabs;
        }
    }
    return result;
}

错误:

Object reference not set to an instance of an object.

转换输入框

您没有初始化数组。将int[] tab = null;更改为int[] tab = new int[numericUpDown1.Value];

如果不初始化数组,它将保持 null,因此tab[i]始终为 null。方括号中的值将告诉编译器您的数组有多大。

如果您不知道数组的大小,您不

想知道或者您只是不关心,您可能需要使用List<T>:

private void button1_Click(object sender, EventArgs e)    
{
    List<int> tab = new List<int>();
    for (int i = 0; i < numericUpDown1.Value; ++i)
    {
        tab.Add(Convert.ToInt32(Interaction.InputBox("Value", "Array")));
       // Error here
    }
    textBox1.Text = "Plus petit: " + Smaller(tab).ToString();         
    //textBox1.Text = "Plus grand: " + result.ToString();
}
private int Smaller(List<int> list)
{
    var result = list[0];
    foreach (int tabs in list)
    {
        if (result > tabs)
        {
            result = tabs;
        }
    }
    return result;
}

//编辑:如果您想为自己节省一些代码,并且只想从该列表中获得最小的 int 值,请使用

textBox1.Text = "Plus petit: " + tab.Min().ToString();

In button1_Click() tab 为空,因此无法分配给tab[i] 。你应该先做tab = new int[numericUpDown1.Value];