繁体   English   中英

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

[英]how to increase array element by multiplying

Textbox2有一些60个ID,我想将其增加到250个。...所以我使用以下代码增加了元素。 当我单击大小按钮时,textbox2应该具有300个id(现在只有60个)..最近我需要将其减少到250个id

但它正在例外

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

    }

在此处输入图片说明

请告诉我我该怎么办?

您无法更改数组大小。 如果要具有动态大小,则应使用List<T>类的集合

...
    string[] vlist = textBox1.Text.Split('\n');
    int size = (Convert.ToInt32(textBox2.Text)) / Convert.ToInt32(vlist.Length) +1;
    string newString = "";
    for(int i=0;i<size;i++){
        newString = String.Join("\n",vlist);
        textBox2.Text += newString + "\n";
    }
...

这样,您可以将已经到达的信息(vlist),所需的次数(大小)附加到文本框。 我还没有测试过,但是可能再次需要时会重复这些ID,在这种情况下,请从大小变量定义中删除“ +1”

对于减少到250,您应该指定要遵循的条件...如果它们只是前250个条件,则可以轻松地在for循环中使用250作为中断条件/最高值来做到这一点。

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设置为它即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM