我们获得了一个随机生成~500个数字的文本文件。我有文件读取,但现在我想将它存储到一个数组中,以便我可以从最小到最大排序。每当我尝试设置它时,我都会遇到一堆不同的错误 这是我到目前为止所拥有的。
static void Main(string[] args)
{
try
{
//opens and closes the stream reader
using (StreamReader sr = new StreamReader("sort.txt"))
{
string line;
while ((line = sr.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
}
catch (Exception e)
{
//lets user know that the file could not be read
Console.WriteLine("Sorry that file could not be read");
Console.WriteLine(e.Message);
}
我是否需要在try语句中设置数组?我需要做些什么才能对这些数字进行排序?
答案 0 :(得分:2)
我不知道你会得到什么错误,但是如果你只需要从文件中读取数字(假设每行一个整数),可以通过以下方式完成:
var myNumbers = File.ReadAllLines("myFile.txt")
.Select(x => int.Parse(x))
.OrderBy(x => x)
.ToList();
答案 1 :(得分:0)
发布有关错误的信息有助于解决这些特定问题。
但是,对于数组,如果你知道它总是500个数字,你可以简单地声明一个整数数组并按如下方式使用它:
int[] numberArray = new int[500];
numberArray[i] = int.Parse(line); //Assuming you can rely on them always being numbers
话虽如此,我认为正常的List和Linq可能是完成其中一些的首选方式。虽然我现在要保存这个例子。
如果您可以提供更多详细信息,我会尝试添加更多信息。
编辑:添加列表信息:
在程序的最顶层,你需要这个:
using System.Collections.Generic;
它告诉编译器你希望使用该程序集中的代码,它就是List类所在的位置。
接下来只需声明您的列表:
List<int> numberList = new List<int>();
然后,当您循环浏览文件时,可以将整数添加到列表中:
numberList.Add(int.Parse(line));
当您准备好对它们进行排序时,您需要将其添加到程序的顶部:
using System.Data.Linq;
然后在您的代码中,您可以创建一个包含已排序数字的新列表:
List<int> sortedListOfNumbers = numberList.OrderBy(p => p).ToList();
或者,如果您只想循环并打印出来:
foreach( int number in numberList.OrderBy(p => p)) {
Console.WriteLine(number);
}