在我的 C# 类(class)中,为我当前的作业(控制台程序)提供了以下数据文件:
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;
}
}
}
我对最后一项作业感到非常困惑。我不知道如何进行。请,如果有人可以帮助我...插话。
哦,是的:没有列表对象,没有字符对象,没有正则表达式。这是基础入门类(class);我们没有涵盖其中的任何内容,也可能不会使用它们。
我真的,真的需要一些帮助。正如我所说,我还需要搜索数组并比较用户输入,所以如果有人知道任何好的“从 CSV 文件读入数组然后用它做一些数学运算”资源,我'我也很感激被指出这一点。
提前致谢,如果我一次重复几个问答问题,我深表歉意。
最佳答案
这是一个有趣的话题,通常家庭作业不受欢迎,但我会帮助您指明正确的方向,因为您并没有直接要求代码。
首先,您想从文件中获取一个数组,因此您需要创建一个函数来执行此操作并返回一个数组。这使得你的函数原型(prototype)变成了
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;
}
这现在成为您从文件中获取数组的全部功能,无需使用硬编码的“魔数(Magic Number)”。
要使用它,从调用函数调用 GetArrayFromFile
,传入输入文件的文件名并将结果存储在变量中。然后数组包含第一个维度作为行索引,第二个维度是数据。要搜索,请循环遍历第一个索引并检查设备类型的第二个索引。一旦找到它,您就可以查看残值(可能想将其转换为整数以进行比较)。
关于c# - 将一个数组拆分为两个并行数组或在 C# 中直接读入两个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34344857/