簡體   English   中英

如何訪問二維數組以輸入學生的成績? C#

[英]How to access 2d array to enter a grade for a student? C#

我正在嘗試將學生的姓名從二維數組寫入控制台,然后將成績值讀入二維數組中的正確位置。 數組中的每個元素都有一個學生姓名和成績。 任何人都可以幫我澄清這一點,如果這可行,我覺得我正處於精神突破的邊緣。

static void AskNameForGrade()
        {
            for (int i = 0; i < nameAndGradeArray.GetLength(0); i++)
            {
                Console.WriteLine($"Please enter grade for {nameAndGradeArray[i]}");

                for (int j = 0; j < nameArray.GetLength(1); j++)
                { 
                    string stringGrade = Console.ReadLine();
                    int.TryParse(stringGrade, out grade);
                    //read in grade to array match name shown
                }


            }
        }

你說你的數組是二維的,然后你嘗試使用nameAndGradeArray[i]的單一維度訪問它 - 這不起作用

你不需要/不應該有一個循環來存儲成績——循環從 0 開始,所以這樣做可能會覆蓋名稱(假設 namearray 是一個錯字),然后要求另一個成績

假設您有一個 nameAndGradeArray,例如string[10,2]您將有一個循環從 0 運行到GetLenth(0)-1 (即 9)並打印它在[i,0]找到的名稱,然后詢問對於成績並使用nameAndGradeArray[i,1] = stringGrade;存儲成績nameAndGradeArray[i,1] = stringGrade;

nameAndGradeArray 是(可能)一個二維字符串數組; 你不能把 int 放進去。 如果您使用 TryParse 來檢查他們輸入的數字,那是有道理的,但也許現在暫時不要考慮那一點復雜性,只需詢問成績並存儲即可。 如果名稱已經在 nameAndGrade 的第一維中,也不需要 namearray(如果這不是拼寫錯誤)

這可能是一個學術練習,因此我將避免提出更深入的建議,但您將來可能不會如此頻繁地使用 N 維數組,因為它們不是很有用。 有一天,您會將其建模為一個具有字符串名稱和數字等級的類,並且它將位於一個靈活的集合中,例如 List..

多維數組必須與我建議使用字典的類型相同,您有一個鍵和一個值,其中的值(例如等級)屬於名稱。 如果您使用字典,此代碼應該可以工作

string[] names = new string[]{"Adam", "Brittany"};
Dictionary<string, int> nameAndGrades = new Dictionary<string, int>();
for (int i = 0; i < names.GetLength(0); i++)
{
    int grade = 0;
    while(true)
    {
        Console.WriteLine($"Please enter grade for {names[i]}");
        if(int.TryParse(Console.ReadLine(), out grade))
        {   
            nameAndGrades.Add(names[i], grade);
            break;
        }
    }
}

foreach (var vp in nameAndGrades)
{
    Console.WriteLine($"{vp.Key} : {vp.Value}");
}

你可以用這個小提琴看到它的作用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM