2015-08-10 2 views
1

Ниже приведен код, который принимает три числа (часы, минуты и секунды), указанные в myobject.settime, и отображает их в правильном формате в военное время. Проблема в том, что когда я даю три числа, вывод на моей консоли имеет три совершенно разных номера.Java время отображения неожиданных результатов?

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. 
    }             
} 

Сейчас мой выход:

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

Но последняя строка моего выхода (06:00:00) должно быть (13:27:06), пожалуйста, объясните, что происходит.

+0

Этот вопрос, вероятно, следует исключить, поскольку он выглядит как (или ошибка опечатка) копия и паста ошибки. – DigitalNinja

ответ

4

Я думаю, ваша проблема заключается в следующем:

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); 

вы назначаете три раза hour

+1

Спасибо, теперь это намного больше смысла, и причина, по которой мой выход был в шесть часов, состоял в том, что последний час был равен секундам, а секунды - 6. –

Смежные вопросы