Наиболее логичная вещь, которую нужно вернуть, это строка продолжительности из метода getDurationString. Поэтому я бы изменил тип возвращаемого значения на String (как намекал MadProgrammer). Кроме того, поскольку метод не указывает на то, что он собирается что-то напечатать, стиль сказал бы, что обработчик должен обрабатывать вывод. Наконец, чтобы ответить на другой вопрос, IDE с радостью позволит вам вернуть int (секундный проход) из метода с типом возвращаемого значения int, даже если это не то, что вам нужно, или если вычисление неверно.
I немного подправил вычисления и проверку, чтобы сначала преобразовать секунды в минуты (если из-за секунд у минут больше часа - я делаю это, потому что я хотел разрешить секунды> 59), затем разбить минуты на часы и секунды (плюс оригинальные секунды). Далее следует код (я также пытался перебирать переменные падежа; обратите внимание, что поскольку переданные переменные являются примитивными типами, я могу смело изменять их без побочных эффектов для вызывающей стороны).
public class TimeString {
public static String getDurationString(int minutes, int seconds) {
//since this method is called get, having a side-effect like printing something is undesirable
if (minutes < 0 || seconds < 0) { //enhanced to handle seconds > 59
return "Invalid value";
}
//handle any seconds that could be minutes
minutes += seconds / 60;
seconds %= 60;
int hours = (minutes / 60);
minutes %= 60;
seconds = (seconds + 60 * minutes);
return hours + " hours " + seconds + " seconds"; //note spaces so things look nice, you asked for hours and seconds, hours, minutes, and seconds is more usual
}
public static void main(String args[]) {
System.out.println(getDurationString(105, 900));
}
}
ДОПОЛНИТЕЛЬНАЯ МЫСЛЬ: использование часы, секунды и минуты не для длительности кажутся очень нетрадиционными. Вот как выглядит код, если хранить минуты в минутах, а не преобразовывать их в секунды.
public class TimeString {
public static String getDurationString(int minutes, int seconds) {
//since this method is called get, having a side-effect like printing something is undesirable
if (minutes < 0 || seconds < 0) { //enhanced to handle seconds > 59
return "Invalid value";
}
//handle any seconds that could be minutes
minutes += seconds / 60;
seconds %= 60; //and mod by 60 to get any remaining seconds
int hours = (minutes / 60);//handle whether there are full hours from the minutes
minutes %= 60;// and mod by 60 to get the remaining minutes
//removed line converting minutes back to seconds
return hours + " hours " + minutes + " minutes " + seconds + " seconds"; //note spaces so things look nice, you asked for hours and seconds, hours, minutes, and seconds is more usual
}
public static void main(String args[]) {
System.out.println(getDurationString(95, 79));// should become 1 hours 36 minutes 19 seconds
}
}