繁体   English   中英

1维数组到2维数组

[英]1 dimension array to 2 dimension array

我正在尝试创建一个读取文本文件的应用程序,其格式如下:

Outremont,3456,4370,15342,546
St-Leonard,6098,12765,10876,1024  
Chapleau,6087,6087,6087,6087

它的每一行基本上都包含一个城镇名称和4个值,这些值代表一个政党的票数。

我需要做的是从每一行中检索每个值,然后将它们加在一起。

示例:我将从第一行(3457)中检索第二个值,并从第二行(6098)中检索第二个值,并将它们加在一起。

到目前为止,我知道如何将一行分割成一个数组,这样我就可以得到。 我使用streamreader读取器检索文本文件的信息,然后使用Split方法拆分一行。

到目前为止,我的代码看起来像这样

public partial class Form1 : Form
    {

        string[] mots;

private void btnLire_Click(object sender, EventArgs e)
    {

        StreamReader reader = new StreamReader(txtCheminAccess.Text);
        while (!reader.EndOfStream)
        {
            string sVal = reader.ReadLine();
            if (sVal.Length > 0)
            {
                mots = sVal.Split(',');

            }
        }
    }

当然,我无法检索每一行,但一次只能检索到一行。 在这种情况下,如果您引用文本文件

Outremont,3456,4370,15342,546
St-Leonard,6098,12765,10876,1024
Chapleau,6087,6087,6087,6087 

我的名为mots数组将仅包含最后一行。 Chapleau,6087,6087,6087,6087

如何将这个1维数组放入2维数组中,使其看起来像Array[textfile Lines,mots]

如果您想要的只是总数,则无需创建二维数组。 创建一个总计数组,然后在阅读时添加每个项目。 像这样:

int totals[] = new totals[4];
foreach (var sVal in File.ReadLines(txtCheminAccess.Text))
{
    if (sVal.Length > 0)
    {
        mots = sVal.Split(',');
        for (int i = 1; i < 5 && i < sVal.Length; ++i)
        {
            int val;
            if (int.TryParse(sVal[i], out val))
            {
                totals[i-1] += val;
            }
        }
    }
}

File.ReadLines逐行读取文件。 对于您创建的StreamReader循环,这非常方便。

阅读该行后,将按照拆分方式进行拆分,然后代码通过split数组解析整数并将其添加到总计中。

暂无
暂无

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

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