为数组的索引分配唯一值

时间:2017-10-16 19:54:39

标签: c# arrays buttonclick

我正在尝试让我的按钮从文本框中获取输入并将其添加到索引中。问题是,对于我尝试过的所有内容,我无法让它为索引中的每个位置赋予唯一值。

private void addBtn_Click(object sender, EventArgs e)
{
    for (int i = 0; i < nums.Length; i++)
    {
        if (nums[0] == 0)
        {
            nums[0] = int.Parse(inputText.Text);
            i++;
        }

        if (nums[1] == 0)
        {
            nums[1] = int.Parse(inputText.Text);
            i++;
        }
    }

    MessageBox.Show(nums[i].ToString());
}

现在我的代码将值插入两个索引位置,而不是将值赋给位置0,然后允许用户将不同的值插入位置1,依此类推等等。

1 个答案:

答案 0 :(得分:4)

目前还不清楚你的意图是什么,但看起来你可能正在尝试为数组添加数字。此代码将解析后的字符串分配给数组中第一个不为零的项。

private void addBtn_Click(object sender, EventArgs e)
{
    int i = 0;
    for (; i < nums.Length; i++)
    {
        if (nums[i] == 0)
        {
            nums[i] = int.Parse(inputText.Text);
            break;
        }
    }
    MessageBox.Show(nums[i].ToString());
}

但这是一种更好的方式,因为用户可能会键入&#34; 0&#34;:

private int _lastUsedIndex = -1;
private void addBtn_Click(object sender, EventArgs e)
{
    var number = int.Parse(inputText.Text);

    //  Increment by one
    ++_lastUsedIndex;

    nums[_lastUsedIndex] = number;

    MessageBox.Show(number.ToString());
}

但是,数组并不是一个好主意:它们会随着你添加内容而增长。首先,他们比你需要的要大,然后他们突然变得太小而你崩溃了。我们现在有更好的选择。除非您的老师坚持您必须使用数组,否则请使用List<int>。在这个版本中,我们还会使用不同的方式来解析数字,如果用户输入&#34; LOLWUT,它会不会崩溃?!?!&#34;而不是数字:

private List<int> nums = new List<int>();

private void addBtn_Click(object sender, EventArgs e)
{
    int number;

    if (int.TryParse(inputText.Text, out number))
    {
        nums.Add(number);

        MessageBox.Show(number.ToString());
    }
    else
    {
        MessageBox.Show(inputText.Text + " isn't a number, smart guy.");
    }
}
相关问题