我有一个文本文件,它被读入,然后存储在string[]中,然后我将它转换成int[],然后我的泡泡排序应该对它进行排序,但它没有排序,因为文本文件中的值是十进制的。所以我的问题是,如何将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");
}发布于 2015-04-02 21:30:59
您不应该使用int对字符串进行比较。使用String.Compare(如果等于则返回0,如果小于则返回-1,如果大于则返回1)或List.Sort()对字符串数组进行排序
发布于 2015-04-02 21:40:04
下面列出了您需要进行的唯一更改:
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
发布于 2015-04-02 21:41:26
使用LINQ非常简单
var asDouble = sh1OpenData.Select(x => Double.Parse(x)).OrderBy(x => x).ToArray();这将为您提供一个排序(升序)的Double数组。
注意:这假设所有的sh1OpenData都可以被解析为一个Double,否则将抛出一个异常。
https://stackoverflow.com/questions/29414173
复制相似问题