转换InputBox

时间:2014-12-01 13:56:31

标签: c#

我尝试将InputBox转换为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.

2 个答案:

答案 0 :(得分:2)

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

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

如果您不知道阵列的大小,您不想知道或者您根本不在乎,您可能想要使用List<T&gt;:

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();

答案 1 :(得分:1)

button1_Click() tab为空,因此您无法分配到tab[i]。 您应首先制作tab = new int[numericUpDown1.Value];