метод tick () в цифровых часах - c# - PullRequest
0 голосов
/ 06 апреля 2020

Для моего задания мы должны создать цифровые часы. Я застрял в третьей части вопроса на некоторое время. Вот вопрос:

  1. записать класс Clock для представления отдельных часов. У вас могут быть часы, минуты и секунды в качестве переменных экземпляра. Вы можете добавить метод для печати времени, предполагая, что это цифровые часы.
  2. написать тестовый класс ClockTester и попытаться создать часы для представления разных стран, напечатать их время.
  3. Добавьте приведенные ниже методы, чтобы часы работали лучше.
    • tick () - будет представлять один тик часов.
    • incrementSeconds () - увеличит время на 1 секунду.
    • incrementMinutes () - увеличит время на 1 минуту.
    • incrementHours () - будет увеличьте время на 1 час.

Вот код, который я пробовал. Он печатает время стран, но тиковый метод не увеличивает время. -

Класс часов:

public class Clock 
{
    //instance variables
    private int hours, minutes, seconds;

    public Clock()
    {
        SetTime(0, 0, 0);
    }

    public Clock(int hours, int minutes, int seconds)
    {
        SetTime(hours, minutes, seconds);
    }

    public void SetTime(int hours, int minutes, int seconds)
    {
        if ((seconds >=  0) && (seconds < 60) && (minutes >= 0) && (minutes < 60)
            && (hours >= 0) && (hours < 24)) {
            this.hours = hours;
            this.minutes = minutes;
            this.seconds = seconds;
        }
        else
        {
            this.hours = 0;
            this.minutes = 0;
            this.seconds = 0;
        }

    }

    public int GetHours()
    {
        return hours;
    }

    public int GetMinutes()
    {
        return minutes;
    }

    public int GetSeconds()
    {
        return seconds;
    }

    //Tick()
    public void Tick()
    {
        IncrementSeconds();
        IncrementMinutes();
        IncrementHours();
    }

    //incrementSeconds()
    public void IncrementSeconds()
    {
        seconds++;
        if (seconds > 59)
        {
            seconds = 0;
            IncrementMinutes(); 
        }
    }

    //incrementMinutes()
    public void IncrementMinutes()
    {
        minutes++;
        if (minutes > 59)
        {
            minutes = 0;
            IncrementHours();
        }
    }

    //incrementHours()
    public void IncrementHours()
    {
        hours++;
        if (hours > 23)
        {
            hours = 0;
        }
    }

}   

ЧасыКласс класса:

public class ClockTester
{
    public static void Main(string[] args)
    {

        //print time in UK - London
        Clock clockUK = new Clock();
        clockUK.SetTime(18, 29, 48);
        Console.WriteLine("London, UK : {0}:{1}:{2}", clockUK.GetHours(), clockUK.GetMinutes(), clockSL.GetSeconds());

        //print time in US - New York
        Clock clockUS = new Clock();
        clockUS.SetTime(13, 29, 48);
        Console.WriteLine("New York, US : {0}:{1}:{2}", clockUS.GetHours(), clockUS.GetMinutes(), clockUS.GetSeconds());

        //print time in Japan - Tokyo
        Clock clockJP = new Clock();
        clockJP.SetTime(02, 29, 48);
        Console.WriteLine("Tokyo, Japan : {0}:{1}:{2}", clockJP.GetHours(), clockJP.GetMinutes(), clockJP.GetSeconds());
    } 
}

1 Ответ

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

Вы должны были слышать о методе / функции ToString.

Все объекты имеют один в C#, потому что все классы наследуются / происходят от класса Object, который определяет метод tostring https://docs.microsoft.com/en-us/dotnet/api/system.object.tostring?view=netframework-4.8 и вы можете перегрузить значение по умолчанию своей собственной реализацией.

https://docs.microsoft.com/en-us/dotnet/api/system.object.tostring?view=netframework-4.8#overloading -the-tostring-method

Ваша функция ToString должна вернуть отформатированную строку, посмотрите на https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings и https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-numeric-format-strings

например

   public class MyTimeClass {

    // fields/variables/properties and other methods not displayed, use imagination!

    public string ToString(){
         return String.Format("{0:00}:{1:00}:{2:00}.{3:000}",this.hours, this.minutes, this.seconds, this.ticks);
        //ideally this would be culture dependant/sensitive
    }

}

https://dotnetfiddle.net/uN2H2F

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