3 回答
![?](http://img1.sycdn.imooc.com/533e4ce900010ae802000200-100-100.jpg)
TA贡献1818条经验 获得超11个赞
你没有Parse从文件中取值。它应该是这样的:
double[] test = System.IO.File
.ReadLines(new_path)
.Select(line => double.Parse(line)) // <- each line should be parsed into double
.ToArray();
foreach (double number in test) {
Console.WriteLine(number);
}
Console.ReadLine();
![?](http://img1.sycdn.imooc.com/533e4d5b0001d57502200203-100-100.jpg)
TA贡献1757条经验 获得超7个赞
这里有一些很好的答案。
double parsedNumber;
for (int i = 0; i < numberArray.Length; i++)
{
bool numberIsValid = double.TryParse(numberArray[i], out parsedNumber);
if (numberIsValid)
test[i] = parsedNumber;
else
Console.WriteLine($"{numberArray[i]} is not a valid double.");
}
![?](http://img1.sycdn.imooc.com/54584d560001571a02200220-100-100.jpg)
TA贡献1802条经验 获得超10个赞
您实际上从未向test数组添加任何值。这行代码:
double[] test = new double[numberArray.Length];
只是说创建一个x大小的空白数组。该数组内的值是默认值(默认double值为0)。如果您希望它们在那里,您需要为数组分配值。
将文本文件行转换为双数组的最简单方法是使用一点 Linq:
if(File.Exists(newPath))
{
double[] test = File.ReadLines(newPath).Select(x => double.Parse(x)).ToArray()
foreach(double number in test)
{
Console.WriteLine(number);
}
Console.ReadLine();
}
但是它的缺点是没有错误处理。
如果你想处理错误,你的代码会稍微长一点,你应该创建一个ParseLines()方法:
double[] test = ParseLines(newPath).ToArray()
foreach(double number in test)
{
Console.WriteLine(number);
}
Console.ReadLine();
private static IEnumerable<double> ParseLines(string filePath)
{
if(File.Exists(newPath))
{
foreach(string line in File.ReadLines(newPath))
{
double output;
if(double.TryParse(line, out output))
{
yield return output;
}
}
}
}
- 3 回答
- 0 关注
- 227 浏览
添加回答
举报