【发布时间】:2015-04-11 22:36:47
【问题描述】:
我正在尝试在 c# 中对文件进行排序,该文件具有字符串(列表中一周中的不同日子没有)。对普通数组的排序有一个例子
string[] array = { "Monday", "Thursday", "Monday", "Wednesday", "Friday", "Tuesday", "Friday", "Tuesday", "Thursday", "Wednesday" };
通过排序算法时 - 按顺序输出天数:周一 周一 周五 周五 周四 周四 周二 周二 周三 周三。但是当我将数组更改为文件数组(如下代码所示)时,它没有排序。我对 c# 编程很陌生。我正在尝试像上面那样输出文件。
为了我自己的测试目的,我保留了代码中的一些片段,所以我很抱歉造成混淆。会发生什么:
一些未显示的代码只是:用户输入一个介于 1-10 之间的值,这称为 userFileInput。
如果有任何帮助,我将不胜感激。谢谢!
代码:
string[] value = MethodA();
//Console.WriteLine(value[1]);
string[] array = { value[userFileInput - 1] }; //userFileInput is the users choice of file
//string[] array = { "Monday", "Thursday", "Monday", "Wednesday", "Friday", "Tuesday", "Friday", "Tuesday", "Thursday", "Wednesday" };
InsertSort(array);
for (int x = 0; x < array.Length; x++)
Console.WriteLine(array[x]);
Console.WriteLine("Original File --------------------------------------------------\n");
Console.WriteLine(value[userFileInput - 1]);
Console.ReadKey();
}
static string[] MethodA() //FILE METHOD - READS IN THE FILES THEN RETURNS THEM TO MAIN METHOD
{
StreamReader dayFile = new StreamReader("c:..\\Files\\Day.txt"); StreamReader dateFile = new StreamReader("c:..\\Files\\Date.txt");
StreamReader sh1Open = new StreamReader("c:..\\Files\\SH1_Open.txt"); StreamReader sh1Close = new StreamReader("c:..\\Files\\SH1_Close.txt");
StreamReader sh1Volume = new StreamReader("c:..\\Files\\SH1_Volume.txt"); StreamReader sh1Diff = new StreamReader("c:..\\Files\\SH1_Diff.txt");
StreamReader sh2Open = new StreamReader("c:..\\Files\\SH2_Open.txt"); StreamReader sh2Close = new StreamReader("c:..\\Files\\SH2_Close.txt");
StreamReader sh2Volume = new StreamReader("c:..\\Files\\SH2_Volume.txt"); StreamReader sh2Diff = new StreamReader("c:..\\Files\\SH2_Diff.txt");
string dayString = dayFile.ReadToEnd(); string dateString = dateFile.ReadToEnd(); string Sh1OpenString = sh1Open.ReadToEnd(); string Sh1CloseString = sh1Close.ReadToEnd();
string Sh1VolumeString = sh1Volume.ReadToEnd(); string Sh1DiffString = sh1Diff.ReadToEnd(); string Sh2OpenString = sh2Open.ReadToEnd(); string Sh2CloseString = sh2Close.ReadToEnd();
string Sh2VolumeString = sh2Volume.ReadToEnd(); string Sh2DiffString = sh2Diff.ReadToEnd();
string[] fileArray = new string[] { Sh1OpenString, Sh1CloseString, Sh1VolumeString, Sh1DiffString , dateString , Sh2OpenString, Sh2CloseString, Sh2VolumeString, Sh2DiffString ,dayString };
return fileArray;
}
static void InsertSort(IComparable[] array)
{
int i, j;
for (i = 1; i < array.Length; i++)
{
IComparable value = array[i];
j = i - 1;
while ((j >= 0) && (array[j].CompareTo(value) > 0))
{
array[j + 1] = array[j];
j = j - 1;
}
array[j + 1] = value;
}
}
【问题讨论】:
-
文件包含什么?
-
其中一些包含日期列表,一些日期,一些数字,例如 75.350 74.430
-
如果您的文件包含重复的日期或星期几,您不应该期望排序算法会“删除”那些重复的条目。排序和分组是两种不同的过程。
-
要排序的数组包含每个文件的内容。如果要获取文件中的行,请使用
shXVolumn.ReadAllLines()返回字符串数组,然后将所有这些数组合并为一个。 -
我以为文件会被读入,那么排序算法应该对它们进行排序/分组?