arrays - Array.Max 打印包含最大值的整个数组(C#)
问题描述
我的作业是写两大部分的代码:一是创建一个名称和数字的文本文件,另一个是读取相同的文本文件,并打印出文件中最大的数字。这是创建文本文件的代码部分(我没有看到任何问题,它工作得很好),类是:
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 . . .
如果有人知道如何解决这个问题,所以输出将是一个数字,我会非常感激,提前感谢任何试图帮助我的人。
解决方案
您正在一一读取整数,一一解析它们并为每个整数打印您已处理的整数的当前最大值。
由于列表是按升序排列的,因此列表未更改是一个巧合。如果您尝试3,2,1
,它将打印3,3,3
.
循环后打印一次。
将来,您可以使用调试器解决此类问题。通过单步执行代码很容易看到。
推荐阅读
- python - GAE dev_appserver.py 在 macOS Mojave 上找不到搜索索引
- c# - XmlAttributeAttribute 数据类型属性?
- javascript - Express multer 在 req.file 上返回 undefined
- c - 为什么二进制文件不是文本文件,所有文本文件都是二进制文件?
- r - 退出时删除动态创建的目录
- javascript - Sharepoint 上的多个 listItemEnumerator 问题
- angularjs - IOS Safari 的 Django 推送通知
- ruby-on-rails - 大虾和 Pdf-Toolkit 将文件保存到公共
- android - 从 Firestore 查询。需要获取对象列表
- android - 尝试在 Activity 中打开时,回收站视图崩溃