Comp Sci How to Display Days in Order for My Clock: Java Homework Solution

AI Thread Summary
The discussion revolves around a Java programming challenge to correctly display days and times in a clock application. The user struggles with the logic in the `advance` and `reverse` methods, particularly in calculating the day of the week based on total minutes. There is confusion regarding the modulo operations used for determining the `day_of_week`, leading to incorrect outputs. Participants emphasize the need to accurately convert total minutes into days and hours, suggesting that the user manually calculate the expected results to understand the logic better. The conversation highlights the importance of correctly implementing time calculations in programming.
Albert12
Messages
9
Reaction score
0
How to display days in order for my clock :

Code:
Thursday, 12:00 pm
Thursday, 2:30 pm
Friday, 12:15 am
Friday, 12:15 am
Thursday, 2:30 pm
Saturday, 2:30 pm

I don't know how to do that. Con some pody help me out?

I have problem in this code ,I couldn't figure out method to display days in order:
Code:
public void advance(int m){
        int totalminutes = (hours*60)+(minutes+m);
              
        hours = (totalminutes/60)%24;
        minutes=totalminutes%60;
         day_of_week=totalminutes%9;
    }

    public void reverse(int m){

	int totalminutes = (hours*60)-(minutes-m);
       
        hours = (totalminutes%24)/60;
        minutes=totalminutes%60;
         day_of_week=totalminutes%14;

    }
Here entyer the cod for my homework :

Code:
package clockdriver;

/**
 *
 * @author
 */
public class ClockDriver {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Clock MyClock = new Clock("Thursday", 12,0); // Instantiate a clock object

	System.out.println(MyClock); // Should display: Thursday, 12:00 p.m.
        System.out.println(); // print blank line

        MyClock.advance(150); // advance time 150 minutes (2 hours 30 minutes)
	System.out.println(MyClock); // Should display: Thursday, 2:30 p.m.
        System.out.println();

        MyClock.advance(585); // advance time by 585 minutes (9 hours 45 minutes)
	System.out.println(MyClock); // Should display: Friday, 12:15 a.m.
        System.out.println();

        MyClock.advance(10080); // advance time by 10080 minutes (7 days)
	System.out.println(MyClock); // Should display: Friday, 12:15 a.m.
        System.out.println();
        MyClock.reverse(585); // reverse time by 585 minutes (9 hours 45 minutes)
	System.out.println(MyClock); // Should display: Thursday, 2:30 p.m.
        System.out.println();

        MyClock.reverse(17280); // reverse time by 17280 minutes (12 days)
	System.out.println(MyClock); // Should display: Saturday, 2:30 p.m.
        System.out.println();

    } // end of main

} // end of class ClockDriver
class Clock{
    /***************************************************************
     * Objects of this class represent time (in hours and minutes) *
     * The time data is stored in 24 hour (HHMM military format)   *
     ***************************************************************/
    private int day_of_week; // valid range of values is 1 thru' 7
    private int hours; // range of values is 0 thru' 23
    private int minutes; // range of values is 0 thru' 59
 private static final String[] Days={"Saturday","Sunday","Monday","Tusday","Wensday","Thusday","Friday",};

    public Clock(String S, int h, int m){

	day_of_week = Integer.parseInt("6");
	
        hours=0;
        minutes=0;
    }



    public void advance(int m){
        int totalminutes = (hours*60)+(minutes+m);
              
        hours = (totalminutes/60)%24;
        minutes=totalminutes%60;
         day_of_week=totalminutes%9;
    }

    public void reverse(int m){

	int totalminutes = (hours*60)-(minutes-m);
       
        hours = (totalminutes%24)/60;
        minutes=totalminutes%60;
         day_of_week=totalminutes%14;

    }

    @Override
    public String toString(){

        String s= Days[day_of_week - 1]+","+
                (hours>12? hours-12 : hours<1? 12 : hours) +
                ":" + (minutes<10? ("0"+minutes) : minutes) +
                (hours>=12? " am" : " pm");

/*+ (hours>12? hours-12 : hours<1? 12 : hours) + ":" +
        (minutes<10? ("0"+minutes) : minutes) + (hours>=12? " pm" : " am"));*/
        
       return(s);










         
    }
    }

my currently result is

Code:
run:
Thusday,12:00 pm

Thusday,2:30 pm

Thusday,12:15 am

Thusday,12:15 am

Sunday,12:30 pm

Sunday,12:30 pm

BUILD SUCCESSFUL (total time: 0 seconds)
 
Physics news on Phys.org
I don't understand what you're doing in the last lines of these two methods:
Code:
public void advance(int m){
        int totalminutes = (hours*60)+(minutes+m);
              
        hours = (totalminutes/60)%24;
        minutes=totalminutes%60;
        day_of_week=totalminutes%9;
    }

    public void reverse(int m){

	int totalminutes = (hours*60)-(minutes-m);
       
        hours = (totalminutes%24)/60;
        minutes=totalminutes%60;
        day_of_week=totalminutes%14;
    }
In the first method, why are you calculating totalminutes & 9? In the second method, why are you calculating totalminutes & 14?

There are 1,440 minutes in a day (24 * 60), but your clock starts at 12:00pm (noon), so if totalminutes > 720 but less than 2160, you need to increment the day to Friday. If totalminutes is between 2160 and 3600, you need to increment the day to Saturday. And so on.
 
Can you please write miss code that , I need. I really stuk with it and I have no time. due time tonight. I tryed by this way but it doesn't work.
Code:
 public void advance(int m){
        int totalminutes = (hours*60)+(minutes+m);
              
        hours = (totalminutes/60)%24;
        minutes=totalminutes%60;

               day_of_week=(24*60)*7+10080/8;

    }

    public void reverse(int m){

	int totalminutes = (hours*60)-(minutes-m);
       
        hours = (totalminutes%24)/60;
        minutes=totalminutes%60;
         day_of_week=(24*60)*7+10080;
 
This isn't an improvement. The first value that is coming up wrong in your program is when the clock is advanced 585 minutes. The program should display Friday 1:45 am, not Friday 12:15 am as your code comment shows. Work through by hand what you need to calculate to arrive at that day and time. Then write your code to do the same.
 
Is this the way how to start I keep change minutes from 60 to 120 to 180 and time changed but I didnt reach the right one:

Code:
int totalminutes = (hours*558)+(minutes+m);
             
        hours = (totalminutes/60)%24;
        minutes=totalminutes%60;
 
Now you're just guessing. First off, it was 585 minutes, not 558 minutes. Why do you have hours * 558?
 
can you please give me example, I really don't understand. can you write code for me as example. I worry about time.
 
I did houre*558 to change time and then it will change days. This is what I thought it will work!
 
Last edited:
Code:
 public void advance(int m){
        int totalminutes = (hours*585)+(minutes+m);
             
        hours = (totalminutes/60)%24;
        minutes=totalminutes%60;

               day_of_week=totalminutes%8;

    }

    public void reverse(int m){

	int totalminutes = (hours*17280)-(minutes-m);
        
      
        hours = (totalminutes%24)/60;
        minutes=totalminutes%60;
         day_of_week=totalminutes%8;

    }
result:

Code:
run:
Thusday,12:00 am

Thusday,2:30 am

Saturday,5:45 am

Sunday,1:30 am

Monday,12:15 am

Saturday,12:45 am

BUILD SUCCESSFUL (total time: 0 seconds)
 
  • #10
If the current time and day is 2:30pm Thursday, and you advanced the clock by 585 minutes, show me how you would figure out the correct time and day.

I DON'T want to see code.
 

Similar threads

Replies
7
Views
2K
Replies
6
Views
3K
Replies
2
Views
1K
Replies
5
Views
3K
Replies
5
Views
3K
Replies
2
Views
2K
Back
Top