Array.Max打印以最大值(C#)插入的整个数组

时间:2018-09-04 16:41:18

标签: arrays max system.io.file converters

我的作业是编写包含两个主要部分的代码:一个是创建包含名称和数字的文本文件,另一个是读取相同的文本文件,并从文件中打印出最大的数字。 这是创建文本文件的代码的一部分(我看不到任何问题,它很好用), 班级是:

class Person
{
    public string Name;
    public string Age;
}

主要是:

        Person a = new Person();
        Person b = new Person();
        Person c = new Person();
        a.Name = "Abel";
        a.Age = "20";
        b.Name = "Bob";
        b.Age = "22";
        c.Name = "Cain";
        c.Age = "25";
        string[] People = { a.Name, a.Age, b.Name, b.Age, c.Name, c.Age };

        using (StreamWriter write = new StreamWriter(@"C:\Users\A\Desktop\file check\test.txt"))
        {
            for (int i = 0; i < People.Length; i++)
            {
                write.WriteLine(People[i]);
            }
        }

文本文件非常简单,看起来像这样:

Abel
20
Bob
22
Cain
25

这部分工作正常。 我遇到问题的部分是应该读取文件并打印最大数字的部分,如下所示:

        string PeopleCheck = @"C:\Users\A\Desktop\file check\test.txt";
        using (StreamReader read = new StreamReader(PeopleCheck))
        {
            while (true)
            {
                string FindMax = read.ReadLine();
                if (FindMax == null)
                {
                    break;
                }   
                int test;
                if(Int32.TryParse(FindMax, out test))
                {
                   // Console.WriteLine(FindMax); --> this will print all numbers, one number in each line
                    int[] numbers = FindMax.Split(' ').Select(n => Convert.ToInt32(n)).ToArray();
                    Console.WriteLine("the highest number is {0}", numbers.Max());
                }
            }
        }
    }

我使用了这篇文章:Convert string to int array using LINQ ,将字符串转换为数字数组。我以为numbers.Max()会打印出最大的数字,但是输出看起来像这样:

the highest number is 20
the highest number is 22
the highest number is 25
Press any key to continue . . .

如果有人知道如何解决此问题,这样输出结果将是一个数字,我将非常感激,在此先感谢任何尝试帮助我的人。

1 个答案:

答案 0 :(得分:1)

您正在一个一个地读取整数,一个一个地解析它们,并为每个整数打印您已经处理过的整数的当前最大值。

这是一个巧合,因为列表按升序排列,所以列表不变。如果您尝试3,2,1,它将打印3,3,3

在循环后打印一次。

将来,您可以使用调试器解决此类问题。逐步查看代码很容易看到。