当前位置:  开发笔记 > 编程语言 > 正文

将一个数组拆分为两个并行数组或直接读入C#中的两个数组

如何解决《将一个数组拆分为两个并行数组或直接读入C#中的两个数组》经验,为你挑选了1个好方法。

在我的C#课程中,我获得了以下数据文件,用于我当前的作业(控制台程序):

Combine,  1500.00
Oxen,    195.00
Mule,  200.00
Tractor,  4000.00
Truck,  12150.00
Trailer,  475.00

当然,空格是文件的一部分.我无法以任何方式保存或更改数据文件.

我需要将其作为二维数组(或两个并行数组)读取,然后从用户输入对数组进行搜索.该程序应该能够接受以下用户输入:

设备名称,起始值,折旧年限和(如果尚未在阵列中)残值.如果设备没有出现在阵列中,我会将其视为新设备,如果再次输入该设备,则无需输入残值.

一旦我有了所有用户输入,我就要输出年份和每年的折旧价值.该程序还需要一个用户输入,输出和退出菜单.

我们只在周三经历了在数组内搜索的例子; 期末考试和这项任务都将于周一到期.我一直在搜索这个网站并阅读三个不同的文本大约八个小时直接试图了解我正在做什么而我根本没有得到它(班上只有八个人高于70%,所以我做得比大多数好,但仍然是.

这是我到目前为止编写的代码.今天我只想尝试一个合适的二维阵列.我的问题是,我是否正确实现了二维数组,如果是这样,我如何从上面显示的文件中引用每个设备和残值,彼此独立?

public static void GetArrayFromFile()
{
    StreamReader equipmentFile = new StreamReader("SalvageData.TXT");
    string[,] salvageFileArray = new string[1, 6];
    for (int indexCounterA = 0; indexCounterA < 6; indexCounterA++)
    {
        if (equipmentFile.Peek() != -1)
        {
            for (int indexCounterB = 0; indexCounterB < 6; indexCounterB++)
            {
                if (equipmentFile.Peek() != -1)
                {
                    salvageFileArray[indexCounterA, indexCounterB] = equipmentFile.ReadLine();
                }
                else
                {
                    break;
                }
            }
        }
        else
        {
            break;
        }
    }
}

在最后一次任务中,我非常关注.我没有IDEA如何继续.拜托,如果有人可以帮我这个...请加入.

哦是的:没有列表对象,没有char对象,没有正则表达式.这是一门基础入门课程; 我们没有涵盖任何这些,也可能不会使用它们.

我真的非常需要一些帮助.我还需要搜索数组并比较用户输入,正如我所说,所以如果有人知道任何好的"从CSV文件读入数组然后用它做一些数学"资源,我'我也很欣赏这一点.

在此先感谢,如果我一次重复几个问答问题,我表示歉意.



1> Ron Beyer..:

这是一个有趣的话题,通常是家庭作业不受欢迎,但我会帮你指出正确的方向,因为你没有直接询问代码.

首先,您希望从文件中获取数组,因此您需要创建一个能够执行此操作的函数并返回给您一个数组.这使您的功能原型成为

public string[,] GetArrayFromFile(string fileName)

注意我们如何返回一个二维数组.所以现在你想要读入文件,但是你想把它分成条目数.您希望尝试在不对数组中的元素数量进行硬编码的情况下执行此操作,因为这需要事先了解输入文件(不确定您是否允许这样做).

因此,让我们从一步读取整个文件开始:

public string[,] GetArrayFromFile(string fileName)
{
    string[] fileData = File.ReadAllLines(fileName);
}

现在我们知道数组的第一个维度,即行数,第二个维度是2,因为每行有2个元素.所以我们可以创建结果数组:

public string[,] GetArrayFromFile(string fileName)
{
    string[] fileData = File.ReadAllLines(fileName);

    string[,] result = new string[fileData.Length, 2];
}

唯一剩下的就是将fileData每个元素分成不同的部分,所以要做到这一点,我们必须使用for循环(可以完成foreach,但我怀疑这可能是一个"高级"主题).

public string[,] GetArrayFromFile(string fileName)
{
    string[] fileData = File.ReadAllLines(fileName);

    string[,] result = new string[fileData.Length, 2];

    for (int i = 0; i < fileData.Length;i++)
    {
        string[] parts = fileData[i].Split(',');
        result[i, 0] = parts[0];
        result[i, 1] = parts[1];  //Probably want to .Trim() here
    }

    return result;
}

现在,它成为了从文件中获取数组的整个函数,而不使用硬编码的"魔术"数字.

要使用它,请从调用函数调用GetArrayFromFile传入输入文件的文件名并将结果存储在变量中.然后,数组包含第一个维度作为行索引,第二个维度是数据.要搜索,请遍历第一个索引并检查设备类型的第二个索引.一旦找到它,您就可以查看残值(可能希望将其转换为整数以进行比较).

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有