我正在从事一项处理文件输入和输出的任务。说明如下:
编写程序以更新清单文件。库存文件的每一行都有一个产品编号,一个产品名称和一个数量,并用竖线分隔。交易文件将包含一个产品编号和一个更改量,对于增加可能为正,对于减少可能为负。使用事务文件更新库存文件,并使用更新数量写入新的库存文件。我提供了2个用于测试程序的输入文件以及一个示例输出文件,以便您查看完成后的外观。
提示:
库存文件的每一行看起来像这样:
123 |电视| 17
我还得到了程序的基本结构和概述:
class Program
{
public class InventoryNode
{
// Create variables to hold the 3 elements of each item that you will read from the file
// Make them all public
public InventoryNode()
{
// Create a constructor that sets all 3 of the items to default values
}
public InventoryNode(int ID, string InvName, int Number)
{
// Create a constructor that sets all 3 of the items to values that are passed in
}
public override string ToString() // This one is a freebie
{
return IDNumber + " | " + Name + " | " + Quantity;
}
}
static void Main(String[] args)
{
// Create variables to hold the 3 elements of each item that you will read from the file
// Create variables for all 3 files (2 for READ, 1 for WRITE)
List<InventoryNode> Inventory = new List<InventoryNode>();
InventoryNode Item = null;
// Create any other variables that you need to complete the work
// Check for proper number of arguments
// If there are not enough arguments, give an error message and return from the program
// Otherwise
// Open Output File
// Open Inventory File (monitor for exceptions)
// Open Update File (monitor for exceptions)
// Read contents of Inventory into the Inventory List
// Read each item from the Update File and process the data
// Write output file
//Close all files
return;
}
}
解决此问题有很多步骤,但是现在我只真正关心如何将清单文件读入列表。我之前已经将文件读入数组,所以我认为可以这样做,然后将数组转换为列表。但是我不确定如何做到这一点。下面是我创建的要添加到上面结构的main方法中的内容。
int ID;
string InvName;
int Number;
string line;
List<InventoryNode> Inventory = new List<InventoryNode>();
InventoryNode Item = null;
StreamReader f1 = new StreamReader(args[0]);
StreamReader f2 = new StreamReader(args[1]);
StreamWriter p = new StreamWriter(args[2]);
// Read each item from the Update File and process the data
while ((line = f1.ReadLine()) != null)
{
string[] currentLine = line.Split('|');
{
ID = Convert.ToInt16(currentLine[0]);
InvName = currentLine[1];
Number = Convert.ToInt16(currentLine[2]);
}
}
我有点挂在Inventory Node Item = null;
行上。我不确定这应该做什么。我真的只想将文件读取到数组中,以便可以对其进行解析,然后将该数据传递到列表中。有没有办法做到这一点,类似于我编写的代码块?也许有一种更简单的方法。我对此持开放态度,但我认为我会展示自己的思路。
答案 0 :(得分:0)
不需要将所有内容添加到数组,然后将其转换为列表。 InventoryNode Item = null
代表文件中的一行。
您非常接近。您只需要实例化InventoryNode
并向其提供split()
方法的结果。
答案 1 :(得分:0)
您快到了。您已经获取了ID,InvName和Number,因此只需实例化InventoryNode:
Item = new InventoryNode(...);
然后将Item
添加到列表中。
请注意,Inventory Node Item = null;
做得并不多;它只是声明一个变量,您以后可以使用。这不是严格必要的,因为可以在循环内声明该变量。