C# C# Streams and Data Processing Parsing Data Working with Integers

Stuck here dont know whats wrong with my code seems alright to me. Can someone help?

In the ParseWeatherForecast method in the Program.cs file, use int.TryParse to parse the Temperature property from the value of values[3] and add the parsed value to the weatherForecast object. Don't forget to declare the variable to hold the out parameter passed to the TryParse method.

Program.cs
using System;
using System.IO;

namespace Treehouse.CodeChallenges
{
    public class Program
    {
        public static void Main(string[] arg)
        {
        }

       public static WeatherForecast ParseWeatherForecast(string[] values)
       {
            var weatherForecast = new WeatherForecast();
            weatherForecast.WeatherStationId = values[0];
            DateTime timeOfDay;
            if (DateTime.TryParse(values[1], out timeOfDay))
            {
                weatherForecast.TimeOfDay = timeOfDay;
            }
            Condition condition;
            if (Enum.TryParse(values[2], out condition))
            {
                weatherForecast.Condition = condition;
            }
            return weatherForecast;

           int temperature;
           if(int.TryParse(values[3], out temperature) )
               if(int.TryParse(values[3], out temperature) )
{
        weatherForecast.Temperature = temperature;
}


        }
    }
}
WeatherForecast.cs
using System;

/* Sample CSV Data 

weather_station_id,time_of_day,condition,temperature,precipitation_chance,precipitation_amount
HGKL8Q,06/11/2016 0:00,Rain,53,0.3,0.03
HGKL8Q,06/11/2016 6:00,Cloudy,56,0.08,0.01
HGKL8Q,06/11/2016 12:00,PartlyCloudy,70,0,0
HGKL8Q,06/11/2016 18:00,Sunny,76,0,0
HGKL8Q,06/11/2016 19:00,Clear,74,0,0
*/

namespace Treehouse.CodeChallenges
{
    public class WeatherForecast
    {
        public string WeatherStationId { get; set; }
        public DateTime TimeOfDay { get; set; }
        public Condition Condition { get; set; }
        public int Temperature {get; set; }

    }

    public enum Condition
    {
        Rain,
        Cloudy,
        PartlyCloudy,
        PartlySunny,
        Sunny,
        Clear
    }
}

4 Answers

Eric Ridolfi
Eric Ridolfi
18,695 Points

Remove the IF condition right under int temperature and move the entire if block above the return. Once return runs, nothing will get run below that.

Thanks Eric it worked. using System; using System.IO;

namespace Treehouse.CodeChallenges { public class Program { public static void Main(string[] arg) { }

   public static WeatherForecast ParseWeatherForecast(string[] values)
   {
        var weatherForecast = new WeatherForecast();
        weatherForecast.WeatherStationId = values[0];
        DateTime timeOfDay;
        if (DateTime.TryParse(values[1], out timeOfDay))
        {
            weatherForecast.TimeOfDay = timeOfDay;
        }
        int temperature;
        if (int.TryParse(values[3], out temperature))
        {
            weatherForecast.Temperature = temperature;
        }
        return weatherForecast;

       double precipitationChance;
       if (double.TryParse(values[4], out precipitationChance))
       {
            weatherForecast.PrecipitationChance = precipitationChance;
       }
       return weatherForecast;

       double precipitationAmount;
       if (double.TryParse(values[5], out precipitationAmount))
       {
            weatherForecast.PrecipitationAmount = precipitationAmount;
       }
       return weatherForecast;

    }
}

}

Now on this one its saying property precipitationChance not assigned. Can you help?

Eric Ridolfi
Eric Ridolfi
18,695 Points

You want return weatherForecast last. It's in there several times so it is stopping at the first one.

So you would need to remove all of the return weatherForecast except for the one that comes after the precitptationAmount IF statement.

wow you are such a lifesaver. Have to read and practise on the return keyword. Thanks Again

Eric Ridolfi
Eric Ridolfi
18,695 Points

No problem, I'm glad I could help!