【发布时间】:2017-12-11 00:00:26
【问题描述】:
我正在为一个项目创建一个假航班跟踪器,并且需要检查 Flight.csv 文件(所有单个航班)中的行总和是否与 Airport.csv 文件中的 numOfFlights 变量匹配。如何交叉检查这两个文件中的数据而无需合并它们?
以下是相关代码,如果需要更多代码来解决问题,请 lmk。
static void Main()
{
Flight[] flight = new Flight[1000];
Airport[] airport = new Airport[1000];
int flightCount = 0;
int airportCount = 0;
ReadFlightFile(ref flight, ref flightCount);
ReadAirportFile(ref airport, ref airportCount);
int numRecords = flightCount;
OutputFlightMenu();
string userInput = "----";
while (userInput != "exit")
{
userInput = ReadLine().ToLower();
Clear();
OutputFlightMenu();
switch (userInput)
{
case "passengers":
//Stuff
break;
case "time":
//Stuff
break;
case "average":
//Stuff
break;
case "sub":
OutputSubMenu();
string userInput2 = "----";
while (userInput2 != "quit")
{
userInput2 = ReadLine().ToLower();
Clear();
OutputSubMenu();
switch (userInput2)
{
case "flight":
//Stuff
break;
case "count":
//Stuff
break;
case "airline":
//Stuff
break;
default:
WriteLine("Invalid input. Please try again.");
break;
}
}
Clear();
WriteLine("====Exiting System===");
break;
case "report":
//Stuff
break;
default:
WriteLine("Invalid input. Please try again.");
break;
}
}
Clear();
WriteLine("=====Goodbye=====");
ReadKey();
}
public static void ReadFlightFile(ref Flight[] flight, ref int flightCount)
{
string path = "Flight.csv";
FileStream fs = new FileStream(path, FileMode.Open);
StreamReader sr = new StreamReader(fs);
while (sr.Peek() > -1)
{
string line = sr.ReadLine();
string[] flightArray = line.Split(',');
flight[flightCount] = new Flight(int.Parse(flightArray[0]), flightArray[1], int.Parse(flightArray[2]),
int.Parse(flightArray[3]), int.Parse(flightArray[4]));
flightCount++;
}
}
//Basic Read Method
public static void ReadAirportFile(ref Airport[] airport, ref int airportCount)
{
string path = "Airport.csv";
FileStream fs = new FileStream(path, FileMode.Open);
StreamReader sr = new StreamReader(fs);
while (sr.Peek() > -1)
{
string line = sr.ReadLine();
string[] airportArray = line.Split(',');
airport[airportCount] = new Airport(int.Parse(airportArray[0]), airportArray[1], airportArray[2],
int.Parse(airportArray[3]), DateTime.Parse(airportArray[4]));
airportCount++;
}
}
这是来自各个文件的数据:
Flight.csv:
3446,三角洲,91,120,120
2789,United,34,56,78
9078,美国,200,240,210
9079,美国,67,156,165
4567,西南,89,89,91
6799,三角洲,95,67,55
1265,United,102,187,175
8421,美国,12,191,191
3332,西南,78,45,44
Airport.csv:
9000,ATL,亚特兰大,9,12/9/2017
如您所见,机场数组 (9) 中的 numOfFlights 元素与航班总和匹配。
对于这个项目的意图,我已经知道数据会匹配,但我需要能够验证这一点。
感谢任何可以提供帮助的人。
【问题讨论】:
-
As you can see, the numOfFlights element in the airport array (9) DOES match the sum of the flights.我看不到。你能分解一下你是如何得出这个结论的吗? -
只需将您的
numOfFlights与flightCount进行比较 -
请用文字解释你要做什么。 “交叉检查数据”没有任何意义,而且从您的代码中根本不清楚您的意图是什么。你的代码有问题吗?它是崩溃还是无法编译,还是什么?
-
@mjwills 当然可以! Airport.csv 中的第四个元素 (9) 匹配 Flight.csv 中的字面总航班数。
-
文件中是否只有一个机场记录?如果还有更多呢?如果不能有更多,为什么要使用数组?
标签: c# csv filestream streamreader