Итак, я начинаю работу над проектом Computer Science Lab, в основном мы создаем трекер времени активности.Цель этой программы - ввести минуты и секунды в консоль, и программа примет эти значения и напечатает общее время, повторяя процесс до тех пор, пока пользователь не введет недопустимый номер, при котором программа завершит работу.
Большая часть класса ActivityManager была закончена и создана профессором, и только несколько строк необходимо изменить, и это отмечено комментарием.
Вот этот класс:
{
public static void main(String[] args)
{
// declare totalTime and activityTime of type Itime
Itime totalTime, activityTime;
int minutes; double seconds; // user input values
Scanner input = new Scanner (System.in); // to read user input
// display purpose and author
System.out.println ("This program tracks total time in minutes");
System.out.println ("and seconds for a series of activities.");
System.out.println (); // print blank line
System.out.println ("Author: ");
System.out.println (); // print blank line
// specify format for input
System.out.println ("Enter activity time in minutes and"
+ " seconds, all in a");
System.out.println ("single line with spaces in between. Entering"
+ " values" );
System.out.println ("outside appropriate ranges will terminate"
+ " the program.");
System.out.println (); // print blank line
// create the totalTime object of type Itime with 0 minutes and 0.0 seconds
totalTime = new Itime(0,0.0);
System.out.println ("Total time so far is: "
+ totalTime.toString());
System.out.println (); // print blank line
// prompt and read time for an activity
System.out.print ("Enter time for an activity: ");
minutes = input.nextInt();
seconds = input.nextDouble();
// Accumulate if appropriate
while (minutes >= 0 && seconds >= 0 && seconds < 60) {
// create the activityTime object of type Itime with given minutes and seconds
activityTime = new Itime(minutes,seconds);
// add totalTime and activityTime and put the result in totalTime
totalTime = totalTime.addItime(activityTime);
System.out.println ("Total time so far is: "
+ totalTime.toString());
System.out.println (); // print blank line
// prompt and read time for another activity
System.out.print ("Enter time for an activity: ");
minutes = input.nextInt();
seconds = input.nextDouble();
}
// wrap up and print final total
System.out.println ("Sentinel received");
System.out.println (); // print blank line
System.out.println ("Total time so far is: "
+ totalTime.toString());
System.out.println (); // print blank line
// print closing remarks
System.out.println ("Program has terminated.");
System.out.println (); // print blank line
}
Нам было поручено завершить проект путем создания класса Itime, который находится здесь:
{
private int minutes;
private double seconds;
public Itime(int minutes, double seconds){
assert(minutes >= 0 && seconds >= 0 && seconds < 60);
}
public int getMinutes(){return minutes;}
public double getSeconds(){return seconds;}
public String toString(){
Itime totalTime = new Itime(minutes, seconds);
String toString=this.minutes +" minutes and "+this.seconds+" seconds";
return toString;}
public Itime addItime(Itime bTime){
int totalMinutes = this.minutes+bTime.getMinutes();
double totalSeconds = this.seconds+bTime.getSeconds();
if(totalSeconds>60){
totalSeconds-=60;
totalMinutes+=1;
}
Itime totalTime = new Itime(totalMinutes,totalSeconds);
return totalTime;
}
Моя проблема с этим проектом заключается в том, что независимо от того, какие значения я ввожу, он возвращает начальное значение по умолчанию:0 минут и 0,0 секунд.Первоначально я полагал, что моей проблемой был метод addItime, но после просмотра кода я считаю, что проблема заключается в методе toString.
Консоль выводит следующее:
Эта программа отслеживает общее время вминуты и секунды для серии действий.
Автор: Версия: 25 января 2019
Введите время активности в минутах и секундах, все в одной строке с пробелами между ними.Ввод значений за пределами соответствующих диапазонов приведет к завершению программы.
Общее время: 0 минут и 0,0 секунд
Введите время для действия: 20 20
Общее времядалеко: 0 минут и 0,0 секунд
Введите время для действия:
Есть предложения?