Temperature Assessment

Eksemplet viser hvordan man kan bede en bruger om input, og bruge det til at vurdere temperaturen. NB! Temperaturen er i grader celcius.

using System;

namespace temperature_assessment
{
  class Program
  {
    private InputHandler inputHandler;
    private TemperatureAssessor temperatureAssessor;

    public Program(InputHandler ih, TemperatureAssessor ta)
    {
      this.inputHandler = ih;
      this.temperatureAssessor = ta;
    }

    public void Run()
    {
      do
      {
        double temperature = inputHandler.PromptForNumber("Hvad er temperaturen i grader celsius?");
        string result = temperatureAssessor.EvaluateTemperature(temperature);
        Console.WriteLine(result);
      } while (inputHandler.Confirm("Vil du prøve igen?"));
    }

    static void Main(string[] args)
    {
      Console.WriteLine("Temperatur vurdering");

      InputHandler inputHandler = new InputHandler();
      TemperatureAssessor temperatureAssessor = new TemperatureAssessor();
      Program myProgram = new Program(inputHandler, temperatureAssessor);

      myProgram.Run();
    }
  }

  class TemperatureAssessor
  {
    public string EvaluateTemperature(double temperature)
    {
      if (temperature <= 10) return "For koldt til at stå op - bliv i sengen";
      if (temperature <= 15) return "For koldt til at arbejde - bliv hjemme";
      if (temperature <= 20) return "OK temperatur til en tur i skoven";
      if (temperature <= 22) return "Perfekt pausetemperatur";
      return "For varmt til at arbejde - tag til stranden";
    }
  }

  class InputHandler
  {
    public double PromptForNumber(string message)
    {
      double value;
      bool isSuccess;
      do
      {
        string line = Prompt($"{message} ");
        isSuccess = Double.TryParse(line, out value);
        if (!isSuccess)
        {
          Console.Error.WriteLine("Ugyldigt input: Du skal skrive et tal.");
        }
      } while (!isSuccess);

      return value;
    }

    public bool Confirm(string question)
    {
      string confirm = "ja";
      string reject = "nej";
      string response;
      bool isValidResponse;
      do
      {
        response = Prompt($"{question} [{confirm}/{reject}] ");
        isValidResponse = response.Equals(reject) || response.Equals(confirm);
        if (!isValidResponse)
        {
          Console.Error.WriteLine($"Ugyldigt input: Du skal svare enten '{confirm}' eller '{reject}'");
        }
      } while (!isValidResponse);

      return response.Equals(confirm);
    }

    string Prompt(string message)
    {
      Console.Write($"{message} ");
      return Console.ReadLine();
    }
  }
}

Materiale