C #: переход от секунд до минуты?

Ладно, в первую очередь, я уверен, что я не должен использовать TimeSpan для этого задания; скорее представляет собой ряд формул, который показывает секунды, минуты и часы в окне сообщения, когда пользователь вводит количество секунд в текстовом поле.

Вот где я застрял. Мы должны проверить наши ответы на примере: 7565 секунд – 2 часа, 6 минут и 5 секунд. Однако мой код заканчивает вычисление его как 2 часа, 6 минут и 6 секунд. Он также сохраняет этот ответ, когда начальное число составляет 7560 секунд. Я весьма озадачен!! Это условный сценарий, в котором поле сообщения показывает только секунды, если пользователь вводит менее 60 секунд, только минуты + секунды, если пользователь вводит между 60 и 3600 секундами, а часы + минуты + секунды, если введено более 3600 секунд. Вот что я до сих пор, и я был бы признателен за понимание того, почему мои расчеты отключены 🙂

Спасибо за ответы! Но 7565 не является постоянным; пользователь может ввести любое количество секунд, но мой профессор использовал 7565 в качестве примера, чтобы проверить, находимся ли мы на правильном пути.

private void calculateButton1_Click(object sender, EventArgs e) { int totalSeconds, hours, minutes, minutesRemainder, hoursRemainderMinutes, hoursRemainderSeconds; totalSeconds = int.Parse(secondsTextBox1.Text); minutes = totalSeconds / 60; minutesRemainder = totalSeconds % 60; hours = minutes / 60; hoursRemainderMinutes = minutes % 60; hoursRemainderSeconds = hoursRemainderMinutes % 60; if (totalSeconds < 60) { MessageBox.Show(totalSeconds.ToString()); } else if (totalSeconds 3600) { MessageBox.Show(hours.ToString() + " hours, " + hoursRemainderMinutes.ToString() + " minutes, " + hoursRemainderSeconds.ToString() + " seconds"); } } 

Попробуйте использовать модульную арифметику

 int totalSeconds = 7565; int hours = totalSeconds / 3600; int minutes = (totalSeconds % 3600) / 60; int seconds = (totalSeconds % 60); 

 if (hours > 0) MessageBox.Show(String.Format("{0} hours, {1} minutes, {2} seconds", hours, minutes, seconds)); else if (minutes > 0) MessageBox.Show(String.Format("{0} minutes, {1} seconds", minutes, seconds)); else MessageBox.Show(String.Format("{0} seconds", seconds));