Этот код очень плохой, и я рекомендую переписать его, пока он не станет намного короче и проще. Но если бы мне пришлось сделать наименьшее возможное изменение, чтобы распечатать его правильно, я бы изменил это:
WriteToTextFile(result.Substring(3) + Environment.NewLine);
WriteToCurrentTrip(result.Substring(3) + Environment.NewLine);
К этому:
WriteToTextFile(tdItems[itemNumber] + Environment.NewLine);
WriteToCurrentTrip(tdItems[itemNumber] + Environment.NewLine);
РЕДАКТИРОВАТЬ: для справки, вот примерно как я бы написал то, что вы указали, что вы хотели, чтобы ваша функция List
делала, с чередованием комментариев. Вы могли бы сделать это еще лучше, но это должно показать вам некоторые полезные вещи. Надеюсь, я правильно понял предполагаемое поведение.
// StartNew happens to be a quicker way to create and initialize a Stopwatch
Stopwatch triptime = Stopwatch.StartNew();
Console.WriteLine("You have started the trip");
// you can use collection initializer syntax to make it nicer to read when
// you want to add lots of things to a data structure
var tdItems = new Dictionary<string, string> {
{ "1", "foo" },
{ "2", "bar" },
{ "3", "baz" },
{ "4", "end" },
};
while (true)
{
string[] items = Console.ReadLine().Split(' ');
// you can use format strings to easily customize the stringification
// of DateTime and TimeSpan objects, see the MSDN docs
string time = string.Format("{0:c}", triptime.Elapsed);
List<string> waypoints = new List<string>();
// it's easiest to first find the destinations your trip has to visit
foreach (string itemNumber in items)
{
if (tdItems.ContainsKey(itemNumber))
waypoints.Add(tdItems[itemNumber]);
else
Console.WriteLine(
"You have entered a drop which is not in the database...");
}
// string.Join is an easy way to avoid worrying about putting an extra
// "+" at the front or end
string tripDescription = string.Join(" + ", waypoints);
// "using" is generally important so you don't hold a lock on the file
// forever, and it saves you from manually calling "flush" -- it
// flushes when the writers are disposed at the end of the using block
using (var objWriter = new StreamWriter(@"D:\text1.txt", true))
using (var tripWriter = new StreamWriter(@"D:\text2.txt", true))
{
// WriteLine adds a newline for you
objWriter.WriteLine(tripDescription);
tripWriter.WriteLine(tripDescription);
}
if (waypoints.Contains("end"))
{
Console.WriteLine("End of Trip");
Console.WriteLine("Elapsed time " + time);
Console.WriteLine("");
Console.WriteLine("");
Console.WriteLine("");
Console.WriteLine("");
break;
}
}
// you'll get the welcome menu again when you return from this function
Если вы разбиваете то, что делает ваш код, на маленькие, проверяемые фрагменты, это будет намного легче понять, проверить и отладить. В моей версии вы можете видеть, что он получил правильные путевые точки; тогда вы можете видеть, что описание выглядит правильно; тогда вы можете увидеть, что он записал в файл. В твоем случае это попытка сделать все одновременно, и с ним труднее работать.