Ruchir Baronia
Ruchir Baronia

Reputation: 7571

Java time displaying unexpected results?

The following is code which takes the three numbers (hours, minutes, and seconds) given in myobject.settime, and display them formatted correctly in military time. The problem is, when I am giving three numbers, the output on my console has three entirely different numbers.

public class Clock{
    public static void main (String [] args){
        Time myobject = new Time();
        System.out.println(myobject.tomilitary());
        myobject.settime(13, 27, 6 );
        System.out.println(myobject.tomilitary());
    }
}

class Time{
    private int hour, minute, second;

    public void settime(int h, int m, int s){
        hour = ((h>=0 && h<24) ? h : 0); //ternary operator, kind of like an if statement
        hour = ((m>=0 && m<60) ? m : 0);
        hour = ((s>=0 && s<60) ? s : 0);
        System.out.println(h +"\t" +m +"\t" +s +" \t The next line should display these three numbers");
    }

    public String tomilitary() {    
        return String.format("%02d:%02d:%02d", hour , minute , second ); //%02d means display two decimal places for each int after the quote.
    }                                                  
}

Right now my output is:

 00:00:00
 13 27  6    The next line should display these three numbers
 06:00:00

But the last line of my output (06:00:00) should be (13:27:06) please explain what is going on.

Upvotes: 1

Views: 46

Answers (1)

Alex S. Diaz
Alex S. Diaz

Reputation: 2667

I guess your problem is this:

hour = ((h>=0 && h<24) ? h : 0); //ternary operator, kind of like an if statement
minute= ((m>=0 && m<60) ? m : 0);
second = ((s>=0 && s<60) ? s : 0);

you assign three times hour

Upvotes: 4

Related Questions