2017-02-14 2 views
-3

Я новичок в переполнении стека, а также новичок в Java. Я пытаюсь сделать часы, чтобы практиковать/укрепить свои навыки. Вот моя проблема:Как сделать часы в Java?

Я создал класс TimeComponents, в котором у меня есть исходный код для фактического создания часов. Я пытаюсь выяснить, как фактически показывать мои часы в моем основном классе, TimeViewer. (Надеюсь, я правильно это сформулирую).

Вот код:

public class TimeComponents { 
 
\t 
 
\t public int seconds; 
 
\t public int minutes; 
 
\t public int hours; 
 
\t 
 
\t public TimeComponents(int initialHour, int initialMinutes, int initialSeconds){ 
 
\t \t initialSeconds = 0; 
 
\t \t initialMinutes = 0; 
 
\t \t initialHour = 0; 
 
\t \t 
 
\t } 
 
\t public void Tick(){ 
 
\t \t seconds = seconds ++; 
 
\t \t if(seconds == 60){ 
 
\t \t \t minutes ++; 
 
\t \t \t seconds = 0; 
 
\t \t \t if(minutes == 60){ 
 
\t \t \t \t hours ++; 
 
\t \t \t \t minutes = 0; 
 
\t \t \t } 
 
\t \t } 
 
\t } 
 
\t 
 
\t 
 
\t \t 
 
} 
 
\t \t

А вот главный класс, который я хочу использовать для печати мои часы:

public class TimeViewer { 
 

 
\t public static void main(String[] args) { 
 

 
\t } 
 

 
}

Любая помощь приветствуется!

+2

Что вы хотите сказать? – tnw

+0

Ваш основной метод пуст, что вы ожидаете от пустого основного метода? – px06

+0

«сделать часы» нам не очень много говорят. Вы хотите распечатать его на консоли? Вы хотите, чтобы это было в окне? Если последнее, это цифровое ('03: 00') или аналоговое()? Если первый, вы намеревались заставить его всегда печатать на одной строке? – VGR

ответ

0

Вы можете просто сделать функцию toString в вашей функции Time. Он создает строку с 3 целыми числами, и вы можете распечатать ее в своей основной.

код TimeViewer:

public String toString(){ 
    return hours + ":" + minutes + ":" + seconds 
} 

код Main:

TimeComponent timecomponent = new TimeComponent(0, 0, 0); 
System.out.println(timecomponent); 

Я смотрел код, и кажется, что ваш делать что-то weard в конструкторе не связывающую с данными класса (начальная).

1

Трудно сказать, что ваш вопрос на самом деле, но эта линия:

seconds = seconds ++; 

НЕ будет увеличиваться секунд. Я пробовал:

int seconds = 0; 
    seconds = seconds++; 
    System.out.println(seconds); 

печатает 0.

Причина заключается в том, что суффикс ++ применяет приращение после присвоения значения переменной, так что вы потеряете приращение.

Попробуйте просто

seconds++; 
0

Я не совсем уверен, что вы просите конкретно, но вы обратились за помощью, как правило, и я вижу пару проблем с вашим кодом, что я могу помочь с.

Ваш основной метод пуст, поэтому ничего не произойдет, когда вы запустите свой код. Попытайтесь создать экземпляр TimeComponent в своем основном методе и вызовите с ним Tick(), чтобы узнать, что произойдет.

В конструкторе вашего класса TimeComponents вы установили входы «initialHour, initialMinutes и initialSeconds» равными нулю. Это не объявляет переменные «минуты, секунды и часы» и приведет к ошибке при запуске вашего метода Tick().В конструкторе, попробуйте установить каждый из этих переменных, равных ваших соответствующих входных переменных, чтобы избежать этого, например, так:

public TimeComponents(int initialHour, int initialMinutes, int initialSeconds){ 
      seconds = initialSeconds; 
      minutes = initialMinutes; 
      hours = initialHours; 
    } 

Для увеличения с помощью оператора ++, он не будет работать, если вы не поставить ++ право рядом с именем переменной, которую вы хотите увеличить, например, так:

hours++; 

Я надеюсь, что это помогло вам решить вашу проблему. Удачи!

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