2016-02-27 7 views
0

Я хочу представить время с моим классом времени. Я не могу использовать методы get и set. Только я могу использовать перечисленные методы для кода. Но он не работает. Он возвращает 0: 0: 0.Java, представляющий класс времени

public int addHours(int hours) 
     { 
      if(hours>=0&&hours<=23) 
      {  
      return hours; 
      } 
      return 0; 
     } 
     public int addMinutes(int minutes) 
     { 
      if(minutes>=0&&minutes<=59) 
      { 
       return minutes; 
      } 
     return 0; 
     } 
     public int addSeconds(int seconds) 
     { 
      if(seconds>=0&&seconds<=59) 
      { 
       return seconds; 
      } 
     return 0; 
     } 
     public String showTime() 
     { 
     return hours+":"+minutes+":"+seconds; 
     } 
} 
+5

Ваши методы 'add ...' ничего не добавляют. Почему они называются «addSeconds» и «addMinutes»? Вы должны либо реорганизовать код, чтобы фактически добавить значение, либо переименовать методы. – Paul

+0

Вы должны сохранить их в своих глобальных переменных, таких как 'this.hours = hours', иначе их значения не будут сохранены. – Pragnani

+0

используйте java 8 time api, серьезно! (LocalTime - это то, что вы ищете). если вы зависите от java 7 или новее, используйте JodaTime – kritzikratzi

ответ

0

Использование java.util.Calendar и java.text.SimpleDateFormat:

Calendar cal = Calendar.getInstance(); 
cal.set(Calendar.HOUR, 0); 
cal.add(Calendar.HOUR, 5); 
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); 
System.out.println(sdf.format(cal.getTime())); 
+0

Я не могу использовать какие-либо другие методы или пакеты. Только перечисленные методы –

+0

@ TimuçinÇiçek вы должны указать в своем вопросе, что это домашнее задание и что вы вынуждены уважать ограничения. –

2

ваш код ничего не делает.

вам нужно сделать что-то вроде этого:

public void addHours(int hours){ 
    this.hours += hours; // add hours 
    this.hours %= 24; // roll over at 24 hours 
} 

public void addMinutes(int minutes){ 
    this.minutes += minutes; // add minutes 
    addHours(this.minutes/60); // carry over to hours 
    this.minutes %= 60; // roll over at 60 minutes 
} 

public void addSeconds(int seconds){ 
    this.seconds += seconds; // add seconds 
    addMinutes(seconds/60); // carry over to minutes 
    this.seconds %= 60; // roll over at 60 seconds 
} 

(это, вероятно, не будет иметь значения, но это не поточно вообще)

, но это, как правило, плохая идея. Java 8 имеет красивое время api, pre Java-8 есть библиотека JodaTime (которая на самом деле является основой Java 8 time api). Кажется, что вы хотите сделать, может выиграть от LocalTime:

LocalTime t = LocalTime.of(13,50,27).addHours(1).addMinutes(1).addSeconds(1); 
System.out.println(t.toString()); 

// prints 14:51:28 
+1

спасибо за ваше решение, но я нашел решение самостоятельно, спасибо большое –

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