C # arraylist пользовательский ввод - PullRequest
0 голосов
/ 03 октября 2011

У меня проблема с ArrayList в C #, я знаю, как добавить свой собственный ввод и запустить программу, чтобы массив был заполнен информацией. Но я хотел бы заполнить ArrayList на основе пользовательского ввода.

Это то, что мне нужно: пользователь может ввести свое имя, дату рождения и возраст. И вся эта информация будет храниться в одном элементе.

Моя цель - создать приложение, которое позволило бы пользователю вводить данные такого рода для нескольких человек, а затем распечатывать вывод.

Вот мой код:

У меня есть класс Person, который обрабатывает информацию пользователя:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ArrayList_Siomple_Sorted_10
{
    class Person
    {
    private string personName;
    private DateTime birthDate;
    private double personAge;

    public Person(string name, DateTime bDate, double age)
    {
        personName = name;
        birthDate = bDate;
        personAge = age;
    }
    public string Name
    {
        get { return personName; }
        set { personName = value; }
    }
    public DateTime Birthdate
    {
        get { return birthDate; }
        set { birthDate = value; }
    }

    public double Grade
    {
        get { return personAge; }
        set { personAge = value; }
    }

    public void Show()
    {
        Console.WriteLine(personName + " " + birthDate.ToString("d.M.yyyy") + " " + personAge);
    }
}
}

А это класс Main с методом main:

using System;
using System.Collections;
using System.Text;

namespace ArrayList_Siomple_Sorted_10
{
class Program
{
    static void Main(string[] args)
    {
        DateTime birthDateP3 = new DateTime(1980, 2, 25);
        Person p3 = new Person("Ann Person", birthDateP3, 8);
        DateTime birthDateP2 = new DateTime(1980, 2, 25);
        Person p2 = new Person("Ann Person", birthDateP2, 8);
        DateTime birthDateP1 = new DateTime(1980, 2, 25);
        Person p1 = new Person("Ann Person", birthDateP1, 8);

        ArrayList ar = new ArrayList();

        ar.Add(p1);
        ar.Add(p2);
        ar.Add(p3);
        Console.WriteLine("Print the original Array");
        foreach (Person pr in ar)
            pr.Show();

    }
}
}

Возможно ли то, что я пытаюсь достичь, возможно? Спасибо за ответ. V.

Ответы [ 3 ]

1 голос
/ 03 октября 2011

Да - это возможно. С какой конкретно проблемой вы сталкиваетесь здесь? Кстати, вместо ArrayList вы должны использовать общую коллекцию List<Person>.

Из консольной программы вы будете использовать Console.ReadLine, чтобы получить пользовательский ввод, проверить / проанализировать его, заполнить экземпляр лица и добавить в свой список. Например,

...
    var ar = new List<Person>();

    var name = Console.ReadLine();
    // validate name (check if its not blank string etc)
    ...

    var dob = Console.ReadLine();
    // validate date of birth (date/time format, past date etc)
    ...
    DateTime dateOfBirth = DateTime.Parse(dob);

    // compute age
    var age = (DateTime.Now - dateOfBirth).Years;

    var p = new Person(name, dateOfBirth, age);
    ar.Add(p);

...
0 голосов
/ 03 октября 2011

Конечно, вы можете читать входные данные с помощью метода Console.ReadLine () или, если вам нужен более сложный интерфейс, вы можете использовать Windows Form API.

0 голосов
/ 03 октября 2011

Прежде всего, вы должны рассмотреть возможность использования List<T> вместо ArrayList.

Во-вторых, конечно, это возможно. Вы можете сделать это следующим образом.

static void Main(string[] args)
{
    DateTime birthDateP3 = new DateTime(1980, 2, 25);
    Person p3 = new Person("Ann Person", birthDateP3, 8);
    DateTime birthDateP2 = new DateTime(1980, 2, 25);
    Person p2 = new Person("Ann Person", birthDateP2, 8);
    DateTime birthDateP1 = new DateTime(1980, 2, 25);
    Person p1 = new Person("Ann Person", birthDateP1, 8);

    ArrayList ar = new ArrayList();

    string name = Console.ReadLine();        
    ar.Add(name);


    Console.WriteLine("Print the original Array");
    foreach (Person pr in ar)
        pr.Show();

}

И вы должны использовать общий список вместо ArrayList, например:

List<string> mylist = new List<string>();
string str = Console.ReadLine();
mylist.Add(str);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...