将string []转换为double []

时间:2015-04-02 13:27:11

标签: c# arrays

我有一个正在读入的文本文件然后存储在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");
}

3 个答案:

答案 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,否则会抛出异常。