如何通过乘法增加数组元素

时间:2017-12-20 06:36:53

标签: c#

Textbox2有大约60个ID,我想将它增加到250 .... 所以我使用下面的代码增加元素。 当我点击大小按钮时,textbox2应该有300个ID(现在它只有60个).. 最近我需要将它减少到250 ids

。但它正在获得例外

    private void Size_Click(object sender, System.EventArgs e)
    {
        string[] vlist = textBox1.Text.Split('\n');

        int size = (Convert.ToInt32(textBox2.Text)) / Convert.ToInt32(vlist) +1;
        int p = Convert.ToInt32(textBox2.Text) * size;

        textBox2.Text = p.ToString();

    }

enter image description here

请告诉我该怎么做?

3 个答案:

答案 0 :(得分:0)

您无法更改数组大小。 如果您想拥有动态尺寸,则应使用List<T>

等集合

答案 1 :(得分:0)

public and final

这样,您可以在文本框中附加您已经获得的信息(vlist),您需要的次数(大小)。我还没有测试过它,但可能会再次重复这些ID,在这种情况下,删除&#34; + 1&#34;从大小变量定义

对于减少到250,您应该指定您遵循的标准...如果它们只是前250个,您可以在for循环中轻松完成,250作为中断条件/最高值

答案 2 :(得分:0)

private void Size_Click(object sender, System.EventArgs e)
{
    List<string> vlist = new List<string>(textBox2.Text.Split('\n'));
    int currentLineNumber = vlist.Count;
    int targetLineNumber = Int32.Parse(textBox1.Text);

    if (targetLineNumber == currentLineNumber)
        return; //nothing to change
    else if (targetLineNumber > currentLineNumber) //increase number of line
    {
        for (int i = currentLineNumber; i < targetLineNumber; ++i)
            vlist.Add(vlist[(i - currentLineNumber) % currentLineNumber]);
    }
    else //reduce number of line
        vlist = vlist.GetRange(0, targetLineNumber);

    if (vlist.Count == 0)
        textBox2.Text = String.Empty;
    else
    {
        string result = vlist[0];
        for (int i = 1; i < targetLineNumber; ++i)
            result += String.Format("\n{0}", vlist[i]);
        textBox2.Text = result;
    }
}

逻辑非常简单。首先,获取textbox1中的行数和textbox2中的目标行号。 (这假设textbox1不是空的)

为了增加大小,我们只是继续向列表添加id,直到达到目标大小。为了减小尺寸,它甚至更简单,只需从列表中取出前N行。调整大小后,只需将所有行重新连接在一起并将textBox1.Text设置为它。