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

Click For Summary

Discussion Overview

The discussion revolves around a Java homework problem related to implementing a clock that displays days and times in order. Participants are seeking assistance with coding methods to correctly advance and reverse time while ensuring the day of the week is updated accordingly. The scope includes technical explanations, debugging, and conceptual clarification of time calculations.

Discussion Character

  • Technical explanation
  • Debate/contested
  • Homework-related

Main Points Raised

  • One participant expresses confusion about the logic used in the advance and reverse methods, particularly regarding the calculations for total minutes and the day of the week.
  • Another participant suggests that the day should increment based on specific ranges of total minutes, questioning the current implementation.
  • A participant requests a complete code example due to time constraints, indicating a lack of understanding of the current approach.
  • Concerns are raised about incorrect outputs, specifically regarding the expected time after advancing by 585 minutes, with a suggestion to manually calculate the expected results.
  • Several participants critique attempts to modify the code, pointing out errors in the calculations and suggesting that guessing values is not a productive approach.
  • One participant emphasizes the need for a clear example without code to illustrate how to calculate the correct time and day after advancing the clock.

Areas of Agreement / Disagreement

Participants do not appear to reach a consensus on the correct implementation of the clock methods. There are multiple competing views on how to handle time calculations and day transitions, and the discussion remains unresolved.

Contextual Notes

Limitations include unclear assumptions about how days are calculated based on total minutes, and unresolved mathematical steps in the proposed code modifications. There is also a lack of clarity on the correct range of values for the day of the week.

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 ·
Replies
7
Views
3K
  • · Replies 6 ·
Replies
6
Views
3K
Replies
7
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 5 ·
Replies
5
Views
3K
Replies
58
Views
14K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K