Я получаю сообщение об ошибке каждый раз, когда пытаюсь добавить значение в свой список - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть вопрос, где мы должны сделать приложение типа «погода»? в основном пользователь может добавить город и температуру. Пользователь также может просмотреть добавленные сайты и удалить один из них, если он sh. Я застрял при добавлении в мой список строки из другого класса, не понимаю, что я делаю не так.

    public class Program {
    public static void Main(string[] args) {
        double size;
        int menu;
        bool running = true;
        while (running) {
            Console.WriteLine("1. Add a city");
            Console.WriteLine("2. View cities");
            Console.WriteLine("3. Remove a city");
            Console.WriteLine("4. Quit");
            string str = Console.ReadLine();
            int.TryParse(str, out menu);

            var city = new stad();

            switch (menu) {
                case 1:

                    Console.Write("The amount of cities you want to add: "); //Anga temperatur som ska anges
                    size = double.Parse(Console.ReadLine());

                    //for loop för att ange värderna
                    for (int i = 0; i < size; i++) {
                        Console.Write($"City {(i+1)} : ");
                        string stadString = Console.ReadLine();
                        city.City.Add(stadString);

                        Console.Write($"Temperature for city {(i+1)} : ");
                        double stadDouble = double.Parse(Console.ReadLine());
                        city.Temperature.Add(stadDouble);
                    }
                    Console.Clear();

                    break;

                case 2:

                    break;

                case 3:

                    break;

                case 4:
                    running = false;
                    break;
            }
        }
        Console.ReadLine();
    }
}

class stad {
    public List<string> City { get; set; }
    public List<double> Temperature { get; set; }

}

1 Ответ

1 голос
/ 16 апреля 2020

Вы должны создать экземпляр класса List<>, прежде чем сможете его использовать. Вы создаете класс stad, но свойства City и Temperature нигде не создаются.

Попробуйте это:

class stad {
    public List<string> City { get; } = new List<string>();
    public List<double> Temperature { get;  } = new List<double>();

}

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


Обновление:

Я бы go для City класса, который содержит город название и температура. Таким образом, вы храните связанную информацию вместе.

Например:

public class CityWithTemperature
{
    public string CityName {get; set; }
    public double Temperature {get; set; }
}

public static void Main(string[] args) 
{
    // declare a list which could contain CityWithTemperature classes
    var cityTemperatures = new List<CityWithTemperature>();

    // Create the first city
    var firstCity = new CityWithTemperature();
    firstCity.CityName = "New York";
    firstCity.Temperature = 18.4;
    cityTemperatures.Add(firstCity);

    // create the second city
    // you could also write it shorter:
    cityTemperatures.Add( new CityWithTemperature
    {
        CityName = "Houston",
        Temperature = 10.4
    });

    // display them
    foreach(var cityInfo in cityTemperatures)
    {
        Console.WriteLine($"{cityInfo.CityName} with a temperature of {cityInfo.Temperature}");
    }

    // or a for loop:
    for(int i=0;i<cityTemperatures.Count;i++)
    {
        Console.WriteLine($"{cityTemperatures[i].CityName} with a temperature of {cityTemperatures[i].Temperature}");
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...