2013-11-24 13 views
0

因此,對於我的家庭作業,我需要編寫一種類型的程序,該程序在用戶名稱中包含用戶類型,然後記錄他們的分數。然後它需要找到最高分,最低分和平均分,並列出每一個獲得的玩家。組織數組中的值但保持項目「配對在一起」

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

創建一個類的列表。或花幾個小時瞭解更多關於編程,數據結構等等。 –

回答

0

你絕對可以做,使用字符串的簡單數組。但我不會給你這樣的代碼。你一定要花更多的時間來學習類,數組,列表,循環等。除非你自己做,否則你不會學到任何東西。

而只是爲了告訴你,如何當你知道你正在使用以及語言這是可以做到:LINQ的單行得到匿名類型對象的列表,排序由值下降:

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); 
+2

哈哈,當他看到這個時,我會付錢看他的老師的臉。 –

+0

@ Pierre-LucPineault我用一些文字更新了我的答案。它解釋了爲什麼我這樣做。 – MarcinJuraszek

+1

@MarcinJuraszek--這個解決方案很棒,但老師永遠不會相信這個學生自己想出了這個。 :-) –

1

當你說你不知道如何將它們配對在一起,這是一類是什麼。

public class Person 
{ 
    public string Name { get; set; } 
    public int Score { get; set; } 
} 

一旦你的,你在正確的軌道上用一個列表,而不是一個數組(不,你不能使用數組,但是這將是首選方法)

List<Person> people = new List<Person>(); 

然後,您可以使用循環遍歷列表並訪問屬性。

foreach(Person person in people) 
{ 
    Console.WriteLine(person.Name + ", " + person.Score.ToString()); 
} 

發佈的其他答案很好,但如果您剛剛學習,您應該首先關注類似這樣的內容。

+0

感謝您的回覆,但我需要將名稱和分數放在同一行。我需要爲此創建兩個不同的類(名稱的字符串和分數的int)嗎?我試圖用戶拆分,但我得到轉換問題的名稱和分數。我在頂部放置了新的代碼 – user2781666

+0

沒有,班級的要點是人員對象可以同時具有名稱和分數。查看我在循環中的上面的編輯,查看在同一行上打印名稱和分數的示例。 – aw04

+0

我的老師還沒有談論過課程,所以我有一個問題。當你有Console.WriteLine(person.Name)時,.Name是否分配一個新的行或列,然後填充從塊0開始的值?所以有點像兩個並排的數組? – user2781666