Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字符串[]转换为双精度[]_C#_Arrays - Fatal编程技术网

C# 将字符串[]转换为双精度[]

C# 将字符串[]转换为双精度[],c#,arrays,C#,Arrays,我有一个正在读取的文本文件,然后存储在字符串[]中,然后将其转换为int[],我的bubblesort应该对其进行排序,但不会,因为文本文件中的值是小数。因此,我的问题是如何将string[]或int[]转换为可以接受十进制值的值,如double[],如果存在这样的值。谢谢 代码: else if(input2.ToLower()=“打开”)//---- { int[]intsh1pendata=新int[sh1pendata.Length]; 对于(int x=0;x

我有一个正在读取的文本文件,然后存储在
字符串[]
中,然后将其转换为
int[]
,我的bubblesort应该对其进行排序,但不会,因为文本文件中的值是小数。因此,我的问题是如何将
string[]
int[]
转换为可以接受十进制值的值,如
double[]
,如果存在这样的值。谢谢

代码:

else if(input2.ToLower()=“打开”)//----
{
int[]intsh1pendata=新int[sh1pendata.Length];
对于(int x=0;xintSh1OpenData[sort+1])
{
temp=intsh1pendata[sort+1];
intSh1OpenData[sort+1]=intSh1OpenData[sort];
intSh1OpenData[排序]=温度;
}
}
}
Console.WriteLine(“\n\n\n已删除”);
for(int i=0;i
您不应该使用int对字符串进行比较。使用String.Compare(如果相等,则返回0;如果小于,则返回1;如果大于,则返回1)或List.Sort()对字符串数组进行排序

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
}
double[]intSh1OpenData=新的双精度[sh1OpenData.Length];//double[]而不是int[]
对于(int x=0;x
同时将
temp
变量的声明更改为
double temp

自从您提到您是编程新手以来,您可以通读的内容:


使用LINQ非常简单

var asDouble = sh1OpenData.Select(x => Double.Parse(x)).OrderBy(x => x).ToArray();
这将为您提供一个排序(升序)的
Double
数组


注意:这假设所有的
sh1OpenData
都可以被解析为
Double
,否则将抛出异常。

您使用bubblesort是出于特定原因吗?或者您只是尝试对数组进行排序,而只知道bubblesort?Convert.ToDouble()?
bubblesort
ing?换一个nice怎么样?是的,这基本上就是它的要点。@Guillaume是的,这很好,但是当我编译并运行代码,然后尝试在文件中读取时,它不起作用,因为文本文件包含小数,显然Int不能是小数。我的文本文件只包含小数,所以它们应该被读取为双精度或浮点值,当然?另外,我正在测试我的算法编写技能。您是否尝试过Double.Parse()或Float.Parse()将字符串转换为它的表示类型?我到底如何使用它?我是编程新手,抱歉.string[]sh1OpenData=File.ReadAllLines(“SH1_Open.txt”);提供文本文件的行。因为您正在学习,所以我不会用代码直接给出答案,但要找到一种方法(可能是循环?)遍历每一行并将其内容解析为浮点或双精度(使用Type.parse(line))。并存储在某种类型的列表中,以拥有一个漂亮的转换输入数组。酷。为了补充这一点,也许可以使用PredicateBuilder来检查它是否可以被解析?
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
}
var asDouble = sh1OpenData.Select(x => Double.Parse(x)).OrderBy(x => x).ToArray();