将字符串转换为数字不起作用输出 0



我试图将100个随机数写入一个文件,然后将文件读取到一个数组中,然后对数组进行排序,然后将其写出。如果我将数组长度设置为101,那么如果它更高,代码就会工作——它不工作,只输出0。似乎出于某种原因,如果数组长度高于实际数组长度,则隐函数只输出0。

using System;
using System.IO;
using System.Diagnostics;
using System.Linq;
using System.Text;
namespace Filesort
{
class Program
{
static void Main(string[] args)
{
Random rng = new Random();
int[] numbers = new int[1000];
using (FileStream fs = new FileStream(@"C:/c#/sitekjekokot.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
using (StreamWriter sw = new StreamWriter(fs))
{
for (int i = 0; i < 100; i++)
{
sw.WriteLine(rng.Next(1, 101));
}
sw.WriteLine("end");
}
}
int size = 0;
using (FileStream fs = new FileStream(@"C:/c#/sitekjekokot.txt", FileMode.Open, FileAccess.ReadWrite))
{
using (StreamReader sr = new StreamReader(fs))
{
string number = "sitek";
while(true)
{
number = sr.ReadLine();
if (number != "end")
{
break;
}
else
if (number == null)
{
Console.WriteLine("sitejekokot");
}
Console.Write(number);
numbers[size] = Convert.ToInt32(number);
size++;
Console.WriteLine(numbers[size]);
}
}
}
Array.Sort(numbers);
for (int z = 0; z < size; z++)
{
Console.WriteLine(numbers[z]);

}
}
}
}

break太早,在的第1行

using (StreamReader sr = new StreamReader(fs))
{
string number = "sitek";

while(true)
{
number = sr.ReadLine();

// On the very 1st line (which is random number, not "end")... 
if (number != "end")
{
// ... you break, i.e. stop reading file
break;
}
...

我建议使用File类而不是Streams和Linq进行查询。

创建100随机数并将其写入文件:

Random rng = new Random();
File.WriteAllLines(@"C:/c#/sitekjekokot.txt", Enumerable
.Range(1, 100)
.Select(i => rng.Next(1, 101).ToString())
.Concat(new string[] {"end"}));

从文件中读取所有数字,直到"end"标记,对项目进行排序并以数组形式出现:

int[] numbers = File
.ReadLines(@"C:/c#/sitekjekokot.txt")
.TakeWhile(line => line != "end")
.Select(line => int.Parse(line))
.OrderBy(number => number) 
.ToArray();

记下所有numbers:

foreach (var number in numbers)
Console.WriteLine(number);

最新更新