2015-06-19 158 views
0

我想輸入學生的標識和標記到數組中。問題陳述是,如果用戶輸入學生的身份證,那麼應該顯示該學生的馬克。以下是我的代碼到目前爲止。你可以幫我嗎?從數組中檢索數據

int [] mark = new int [5] ; 
string [] studentsid = new string [5]; 
string userInput = ""; 
bool found = false; 
int i = 0;  

string[] answer = new string[5]; 
for (i = 0; i < answer.Length; i++) 
{ 
    Console.WriteLine("Enter Student " + (i + 1) + " 's ID Number: "); 
    studentsid[i] = Console.ReadLine(); 
    Console.WriteLine("Enter student" + (i + 1) + "'s mark: "); 
    mark[i] = Convert.ToInt32(Console.ReadLine()); 
} 
Console.WriteLine("Enter one of you student's id number"); 

userInput = Console.ReadLine(); 
if (studentsid[i].ToUpper() == userInput.ToUpper()) 
{ 
    found = true; 
    Console.WriteLine(mark[i]);       
} 

if (mark[i] >=85 && mark[i] <= 100) 
{ 
    Console.WriteLine("Distinction"); 
} 
Console.ReadKey(); 
+1

你遇到的實際問題是什麼? –

+0

這是一個很好的*開始*的問題,但特別是當你正在學習編碼時,你需要更好地識別實際問題。請參閱http://meta.stackoverflow.com/questions/284236/why-is-can-someone-help-me-not-an-actual-question – BradleyDotNET

+1

你正在代碼中你想要的部分沒有循環找到正確的ID,其餘的代碼看起來不錯(ish)。 – fvu

回答

4

您需要在代碼塊周圍放置第二個循環來檢查學生的ID是否匹配。

現在,您只是檢查一個學生(數組中的最後一名學生)是否與用戶的輸入相匹配。你也在循環之外使用了for循環的控制變量,這通常被認爲是不好的做法。

考慮這樣的事情:

Console.WriteLine("Enter one of you student's id number"); 

userInput = Console.ReadLine(); 
for (int i = 0; i < studentsid.length; i++) 
{ 
    if (studentsid[i].ToUpper() == userInput.ToUpper()) 
    { 
     found = true; 
     Console.WriteLine(mark[i]);       
    } 
} 

而且,你的 「答案」 數組沒有任何用處。您只能創建它來檢查其硬編碼的長度爲5.使用studentsid的長度代替。

最後,兩個數組並不是真正存儲這種類型數據的理想方式。 使用學生ID作爲鍵和標記作爲值的地圖將是存儲和訪問此數據的更有效的方法。

+0

偉大的答案,因爲它包括修復+一些建設性的反饋。 – 40Alpha