因此,对于我的家庭作业,我需要编写一种程序,其中用户键入人名,然后是他们的分数。然后需要找到最高,最低和平均分数并列出获得每个分数的玩家。
static void Main()
{
string userInput;
Console.Write("Please enter bowler's first name and then a score then use a comma to seperate plays\nExample: Elliott 200,John 180,Jane 193\nPlease enter values here: ");
userInput = Console.ReadLine();
char[] delimiters = new char[] { ' ', ','};
string[] parts = userInput.Split(delimiters);
for (int i = 0; i < parts.Length; i++)
{
Console.WriteLine(parts[i]);
}
Console.ReadLine();
}//End Main()
正如您所看到的,我已经弄清楚如何分割输入,但我不知道如何组织它们并将它们配对。我一直在网上寻找答案并听说过清单,但我从未使用它们。这甚至可能在阵列上?我是否需要在两个不同的阵列上执行此操作?
我也试过分成两个数组,但它有一个转换问题
string userInput;
const int ZERO = 0;
const int ONE = 1;
const int TEN = 10;
string[] parsedInput = new string[TEN];
string[] name = new string[TEN];
int[] score = new int[TEN];
for (int i = 0; i < TEN; ++i)
{
Console.Write("Please enter bowler's first name and then a score\nExample: Name 200\nPlease enter values here: ", i);
userInput = Console.ReadLine();
parsedInput = userInput.Split();
name = parsedInput[ZERO];
score = int.Parse(parsedInput[ONE]);
}
答案 0 :(得分:1)
当你说你不知道如何将它们配对时,这就是一个课程的目的。
public class Person
{
public string Name { get; set; }
public int Score { get; set; }
}
一旦你有了这个,你就是在使用List而不是数组的正确轨道上(不是你不能使用数组,但这将是首选的方式)
List<Person> people = new List<Person>();
然后,您可以使用循环浏览列表并访问属性。
foreach(Person person in people)
{
Console.WriteLine(person.Name + ", " + person.Score.ToString());
}
发布的其他答案很好,但是如果你刚刚学习的话,你应该首先关注这样的事情。
答案 1 :(得分:0)
你绝对可以使用简单的字符串数组来做到这一点。但是我不打算给你这样的代码。你肯定应该花更多的时间来学习类,数组,列表,循环等。除非你自己做,否则你不会学到任何东西。
只是为了告诉你,当你知道你正在使用的语言时它是如何完成的:LINQ one-liner获取匿名类型对象的列表,按值降序排序:
var items = input.Split(',')
.Select(x => x.Split(' '))
.Select(x => new { name = x[0], value = int.Parse(x[1]) })
.OrderByDescending(x => x.value)
.ToList();
从名单中选择你需要的东西:
// min/max are items, so both .name and .value are there
var maxItem = items.First();
var minItem = items.Last();
// average is just a number
var average = items.Average(x => (double)x.value);