Создание адресной книги в C # с использованием массивов - PullRequest
2 голосов
/ 12 декабря 2011

Я новичок здесь, но в основном мне нужна помощь. У меня есть университетское задание, и у меня возникли некоторые проблемы.

Я пытаюсь создать адресную книгу в C # как консольное приложение, и я построил свой массив, свою инструкцию case и т. Д., Но я дошел до того, что не знаю, как редактировать / добавлять данные к этому.

Массив заполняется "XXXXX", и я должен иметь возможность изменить их, чтобы добавить имя, фамилию, номер дома и название дороги, штат и почтовый индекс, где строка 1 - это имя, строка 2 - это фамилия и т. Д. Будет ли код, который я написал в случае 1, сделать это или я сделал это неправильно?

Кроме того, в случае 3 предполагается вывод книги на экран, но появляется сообщение об ошибке, в котором говорится, что он не распознает s1, s2, s3, s4, s5, когда я объявил их в массиве. Это потому, что массив отделен от остальной части программы?

вот что я получил до сих пор, это может быть совершенно неправильно, но любая помощь будет очень цениться.

Большое спасибо.

using System;

public static void Main()
{
    string s1, s2, s3, s4, s5;
    string select;
    string input;
    char charselect;
    char answer;

    string[,] a = new string[10, 5]
        {
            {"XXXXX", "XXXXX", "XXXXX", "XXXXX", "XXXXX"},
            {"XXXXX", "XXXXX", "XXXXX", "XXXXX", "XXXXX"},
            {"XXXXX", "XXXXX", "XXXXX", "XXXXX", "XXXXX"},
            {"XXXXX", "XXXXX", "XXXXX", "XXXXX", "XXXXX"},
            {"XXXXX", "XXXXX", "XXXXX", "XXXXX", "XXXXX"},
            {"XXXXX", "XXXXX", "XXXXX", "XXXXX", "XXXXX"},
            {"XXXXX", "XXXXX", "XXXXX", "XXXXX", "XXXXX"},
            {"XXXXX", "XXXXX", "XXXXX", "XXXXX", "XXXXX"},
            {"XXXXX", "XXXXX", "XXXXX", "XXXXX", "XXXXX"},
            {"XXXXX", "XXXXX", "XXXXX", "XXXXX", "XXXXX"}
         };

    for (int i = 0; i < a.Length / 5; i++)
    {
        s1 = a[i, 0];
        s2 = a[i, 1];
        s3 = a[i, 2];
        s4 = a[i, 3];
        s5 = a[i, 4];

    }
    Console.WriteLine("Do You Want to Open The Address Book?");
    Console.WriteLine("Type Y or N");
    input = Console.ReadLine();
    answer = Convert.ToChar(input);

    while (answer == 'Y')
    {
        Console.WriteLine("1. Add Entry");
        Console.WriteLine("2. Delete Entry");
        Console.WriteLine("3. Print Book to Screen");
        select = Console.ReadLine();
        {
            charselect = Convert.ToChar(select);
            char selection = (charselect);
            switch (selection)
            {
                case '1':
                    string firstname;
                    {
                        Console.WriteLine("Please enter the first name of your entry");
                        firstname = Console.ReadLine();


                        for (int i = 0; i < a.Length / 10; i++)
                        {
                            if (a[i, 0] == "XXXXX")
                            {
                                a[i, 0] = "firstname";
                            }
                        }
                        Console.ReadLine();
                        break;
                    }
                case '2':
                    {
                        Console.WriteLine("");
                        Console.ReadLine();
                        break;
                    }
                case '3':
                    {
                        Console.WriteLine("{0}, {1}, {2}, {3}, {4}", s1, s2, s3, s4, s5);
                        Console.ReadLine();
                        break;
                    }
                default:
                    {
                        Console.WriteLine("Incorrect selection, please try again");
                        Console.ReadLine();
                        break;
                    }
            }
        }
    }
}

Ответы [ 2 ]

1 голос
/ 12 декабря 2011

Обычно вы создаете класс, содержащий поля адреса:

public class Address
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Street { get; set; }
    public string City { get; set; }
    public string Zip { get; set; }
}

Затем работайте с массивом (или списком) этого типа адреса.

var addresses = new Address[10];
addresses[0] = new Address { FirstName = "John", LastName = "Doe", ... };
Console.WriteLine("First name = {0}", addresses[0].FirstName;

Двухмерный массив для этой цели мне кажется очень странным. Вы действительно изучаете такие вещи в университете?

0 голосов
/ 13 декабря 2011

Я вставил ваш код в мою среду IDE, и я вижу ошибку " использование неназначенной локальной переменной ."

Вы видите ошибку, потому что вы не инициализировали s1, s2, s3, s4 & s5 таким образом, который гарантирует .Net, что они будут получать значение каждый раз.

for (int i = 0; i < a.Length / 5; i++)
{
    s1 = a[i, 0];
    s2 = a[i, 1];
    s3 = a[i, 2];
    s4 = a[i, 3];
    s5 = a[i, 4];
}

Компилятор видит, что если a.Length равно нулю, этим переменным не будет присвоено значение. Когда вы объявляете свои переменные, попробуйте сначала инициализировать их чем-то вроде этого:

string s1 = System.String.Empty;
...