Как использовать строковый массив и словарь в методе - PullRequest
0 голосов
/ 12 мая 2019

Я пытаюсь создать программу, которая работает как банковский счет. 4 способа, включая депозит, вывод, печать и создание. Когда я пытался создать цикл переключения в Program.cs, когда попал в дело «Создать»: я не знал, как использовать созданный мной метод (мой цикл переключения также отказывался работать).

Я пытался переключиться с цикла переключения на некоторое время, чтобы исправить проблему с циклом, и, хотя я все понял правильно, я все еще не знал, как использовать этот метод. Я работаю на уроке, у которого есть предполагаемый ответ, но когда я его попробовал, он просто не работает.

Вот как выглядит метод:

private static void Create(string[] cmdArgs, Dictionary<int, BankAccount> accounts)
{
    var id = int.Parse(cmdArgs[1]);

    if (accounts.ContainsKey(id))
    {
        Console.WriteLine("Account already exists.");
    }
    else
    {
        var acc = new BankAccount();
        acc.ID = id;
        accounts.Add(id, acc);
    }
}

Вот как я пытался это реализовать:

string command;

var cmdArgs = command.Split();
var cmdType = cmdArgs[0];

switch (cmdType)
{
    case "Create":
        Create(cmdArgs, accounts);
        break;
}

И так показывает мой урок (метод урока тоже такой же)

var cmdArgs = command.Split();
var cmdType = cmdArgs[0];

switch (cmdType)
{
    case "Create":
        Create(cmdArgs, accounts);
        break;

    case "Deposit":
        Deposit(cmdArgs, accounts);
        break;

    case "Withdraw":
       break;
}

Шахта говорит, что в этом контексте «учетные записи» не существуют.

Я ожидал, что мой метод создаст банковский счет с идентификатором и балансом, но программа даже не запустится.

Ответы [ 2 ]

0 голосов
/ 12 мая 2019

Насколько я понимаю, у вашего подхода есть две проблемы.Во-первых, вы никогда не объявляете свою переменную accounts.Что касается вашей программы, то она не существует, поэтому возникает ошибка.

Другое дело, что вы, кажется, никогда не назначаете что-либо для command, так что даже если вы добавили accounts у вас все равно будут проблемы, потому что вы не сможете разбить несуществующую строку.

Вот как должен выглядеть ваш код, с объявлением и инициализацией command и accounts.

Dictionary<int, BankAccount> accounts = new Dictionary<int, BankAccount>();

// In reality you'd get this string from elsewhere, like a Console.ReadLine or such
string command = "Create 123";

var cmdArgs = command.Split();
var cmdType = cmdArgs[0];

switch (cmdType)
{
    case "Create":
        Create(cmdArgs, accounts);
        break;
}
0 голосов
/ 12 мая 2019

Потому что « a ccounts» и « A ccounts» - это разные строки.Вы должны применить нижний или верхний регистр к cmdArgs [0] и использовать регистр с нижним регистром \ верхним регистром.

Я предпочитаю использовать enum с пользовательским TypeConverter дляте же задачи.

...