我有一个正在读入的文本文件然后存储在string[]
中,然后我转换为int[]
,然后我的bubblesort应该对它进行排序,但它不会因为文本文件中的值是小数。所以我的问题是如何将string[]
或int[]
转换为可以接受小数值的内容,例如double[]
如果有这样的话。谢谢。
代码:
string[] sh1OpenData = File.ReadAllLines("SH1_Open.txt");
...
else if(input2.ToLower() == "open") //----
{
int[] intSh1OpenData = new int[sh1OpenData.Length];
for (int x = 0; x < sh1OpenData.Length; x++)
{
intSh1OpenData[x] = Convert.ToInt32(sh1OpenData[x]);
}
Console.WriteLine("\n");
Console.WriteLine("Unsorted");
for (int i = 0; i < intSh1OpenData.Length; i++)
{
Console.Write(intSh1OpenData[i] + " ");
Console.WriteLine(" ");
}
int temp = 0;
for (int write = 0; write < intSh1OpenData.Length; write++)
{
for (int sort = 0; sort < intSh1OpenData.Length - 1; sort++)
{
if (intSh1OpenData[sort] > intSh1OpenData[sort + 1])
{
temp = intSh1OpenData[sort + 1];
intSh1OpenData[sort + 1] = intSh1OpenData[sort];
intSh1OpenData[sort] = temp;
}
}
}
Console.WriteLine("\n\n\nSORTED");
for (int i = 0; i < intSh1OpenData.Length; i++)
Console.Write(intSh1OpenData[i] + "\n");
}
答案 0 :(得分:0)
你不应该使用int来对字符串进行比较。使用String.Compare(如果相等则返回0,如果小于则返回-1,如果大于则返回1)或List.Sort()以排序字符串数组
答案 1 :(得分:0)
下面列出了您需要进行的唯一更改:
double[] intSh1OpenData = new double[sh1OpenData.Length]; // double[] instead of int[]
for (int x = 0; x < sh1OpenData.Length; x++)
{
intSh1OpenData[x] = Convert.ToDouble(sh1OpenData[x]); // Convert to Double
}
还会将temp
变量的声明更改为double temp;
自从你提到自己是编程新手以来,你可以读到的东西:
C# Sort Arrays and Lists Examples
MSDN: List.Sort Method
答案 2 :(得分:0)
使用LINQ非常简单
var asDouble = sh1OpenData.Select(x => Double.Parse(x)).OrderBy(x => x).ToArray();
这将为您提供Double
的排序(升序)数组。
注意:这假设所有sh1OpenData
都可以解析为Double
,否则会抛出异常。