Как сделать часы на java

Как сделать часы на Java?

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

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

public class TimeComponents < public int seconds; public int minutes; public int hours; public TimeComponents(int initialHour, int initialMinutes, int initialSeconds)< initialSeconds = 0; initialMinutes = 0; initialHour = 0; >public void Tick() < seconds = seconds ++; if(seconds == 60)< minutes ++; seconds = 0; if(minutes == 60)< hours ++; minutes = 0; >> > > 

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

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

3 ответа

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

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

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

Причина в том, что суффикс ++ применяет инкремент ПОСЛЕ присвоения значения переменной, поэтому вы теряете инкремент.

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

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

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

Я надеюсь, что это может помочь вам. И извините, если вы думаете, что есть некоторые дополнительные переменные. Они на самом деле используются мной для реализации аналоговых часов, которые я сейчас пробую.

import java.util.*; public class Date_inner < //on May 04 09:51:52 CDT 2009 String date,time; int hh,mm,ss; void getData() < Date dat=new Date(); String str=dat.toString(); date=str.substring(7,10)+str.substring(3,7)+str.substring(23,28); hh=Integer.parseInt(str.substring(11,13)); mm=Integer.parseInt(str.substring(14,16)); ss=Integer.parseInt(str.substring(17,19)); numtostring(hh,mm,ss); >void numtostring(int hh,int mm,int ss) < time=texttowords(hh)+"Hours "+texttowords(mm)+"Minutes "+texttowords(ss)+"Seconds "; >String texttowords(int num) < String arr[]=; if(num<=20) return arr[num-1]; else if(num>20&&num <59) < return (arr[(num/10)+17]+arr[(num%10)-1]); >else < return "Error"; >> void main() < getData(); System.out.println(date); System.out.println(time); >> 

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

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

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

 public TimeComponents(int initialHour, int initialMinutes, int initialSeconds)

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

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

package myclock; public class Clock < public int hours; public int minutes; public int seconds; public Clock() < hours=12; minutes=0; seconds=0; >public Clock(int hours, int minutes, int seconds) < this.hours=hours; this.minutes=minutes; this.seconds=seconds; >public Clock(int seconds) < this.seconds=seconds%60; hours=seconds/60; this.minutes=hours%60;//minutes this.hours=hours/60;//hours >public void setClock(int seconds) < this.seconds=seconds; >public int getHours() < return this.hours; >public int getMinutes() < return this.minutes; >public int getSeconds() < return this.seconds; >public void setHours(int hours) < this.hours=hours; >public void setMinutes() < this.minutes=minutes; >public void setSeconds() < this.seconds=seconds; >public void tick() < this.seconds++; >public void tickDown() < this.seconds--; >public String toString() < return "("+String.format("%02d",this.hours)+":"+String.format("%02d",this.minutes)+":"+String.format("%02d",this.seconds)+")"; >> 

Тогда класс реализации будет выглядеть так.

package myclock; public class MyClock < public static void main(String[] args) < Clock firstClock=new Clock(3602);//this is if you want to parse in seconds System.out.println(firstClock.toString()+"\n"); Clock secondClock=new Clock(2,45,45);//this is if you want to parse in hours, minutes and seconds System.out.println(secondClock.toString()); for(int i=0;i<10;i++) < firstClock.tick(); System.out.println(firstClock.toString()); >> > 

Источник

Руководство по классу часов Java

В этом руководстве мы перейдем кlook into the Java Clock class from the java.time package. Мы объясним, что такое классClock и как его использовать.

2. КлассClock

Clock был добавлен в Java 8 и обеспечивает доступ к моменту времени с использованием наилучших доступных системных часов, а также для использования в качестве поставщика времени, который может быть эффективно заглушен для целей тестирования.

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

Этот класс помогает нам проверить, работают ли изменения в нашем коде с разными часовыми поясами или — при использовании фиксированных часов — это время не влияет на наш код.

КлассClock абстрактный, поэтому мы не можем создать его экземпляр. Можно использовать следующие фабричные методы:

  • offset(Clock, Duration) возвращает часы, которые смещены на указанныйDuration. Основным вариантом использования этого является симуляция бега в будущем или в прошлом.
  • systemUTC() – возвращает часы, представляющие часовой пояс UTC
  • fixed(Instant, ZoneId) – всегда возвращает один и тот жеInstant. Основной пример использования этого — тестирование, где фиксированные часы гарантируют, что тесты не зависят от текущих часов.

Мы собираемся изучить большинство методов, доступных в классеClock.

2.1. instant()с

Этот метод возвращает момент, представляющий текущий момент, определенный часами:

Clock clock = Clock.systemDefaultZone(); Instant instant = clock.instant(); System.out.println(instant);

2.2. systemUTC()с

Этот метод возвращает объектClock, представляющий текущий момент в зоне UTC:

Clock clock = Clock.systemUTC(); System.out.println("UTC time :: " + clock.instant());
UTC time :: 2018-04-04T17:40:12.353Z

2.3. system()с

Этот статический метод возвращает объектClock для часового пояса, идентифицированного данным идентификатором часового пояса:

Clock clock = Clock.system(ZoneId.of("Asia/Calcutta")); System.out.println(clock.instant());

2.4. systemDefaultZone()с

Этот статический метод возвращает объектClock, представляющий текущий момент и использующий часовой пояс по умолчанию для системы, в которой он работает:

Clock clock = Clock.systemDefaultZone(); System.out.println(clock);

Вышеуказанные строки дают следующий результат (при условии, что нашим часовым поясом по умолчанию является «Азия / Калькутта»):

Мы можем добиться того же поведения, передавZoneId.systemDefault():

Clock clock = Clock.system(ZoneId.systemDefault());

2.5. millis()с

Этот метод возвращает текущий момент часов в миллисекундах. Предоставляетсяto allow the use of the clock in high-performance use cases where the creation of an object would be unacceptable. Этот метод можно использовать там, где в противном случае мы использовали быSystem.currentTimeInMillis():

Clock clock = Clock.systemDefaultZone(); System.out.println(clock.millis());

2.6. offset()с

Этот статический метод возвращает мгновение из указанных базовых часов с добавленной указанной продолжительностью.

Если длительность отрицательна, то результирующий момент часов будет раньше заданных базовых часов.

Using offset, we can get instants in the past and future of the given base clock. Если мы передадим нулевую продолжительность, мы получим те же часы, что и заданные базовые часы:

Clock baseClock = Clock.systemDefaultZone(); // result clock will be later than baseClock Clock clock = Clock.offset(baseClock, Duration.ofHours(72)); System.out.println(clock5.instant()); // result clock will be same as baseClock clock = Clock.offset(baseClock, Duration.ZERO); System.out.println(clock.instant()); // result clock will be earlier than baseClock clock = Clock.offset(baseClock, Duration.ofHours(-72)); System.out.println(clock.instant());
2018-04-10T13:24:07.347Z 2018-04-07T13:24:07.348Z 2018-04-04T13:24:07.348Z

2.7. tick()с

Этот статический метод возвращает моменты из указанных часовrounded to the nearest occurrence of the specified duration. Указанная длительность часов должна быть положительной:

Clock clockDefaultZone = Clock.systemDefaultZone(); Clock clocktick = Clock.tick(clockDefaultZone, Duration.ofSeconds(30)); System.out.println("Clock Default Zone: " + clockDefaultZone.instant()); System.out.println("Clock tick: " + clocktick.instant());
Clock Default Zone: 2018-04-07T16:42:05.473Z Clock tick: 2018-04-07T16:42:00Z

2.8. tickSeconds()с

Этот статический метод возвращает текущее мгновенное значение в целых секундах для данного часового пояса. Эти часы всегда будут иметь полеnano-of-second равным нулю:

ZoneId zoneId = ZoneId.of("Asia/Calcutta"); Clock clock = Clock.tickSeconds(zoneId); System.out.println(clock.instant());

То же самое можно сделать, используяtick():

Clock clock = Clock.tick(Clock.system(ZoneId.of("Asia/Calcutta")), Duration.ofSeconds(1));

2.9. tickMinutes()с

Этот статический метод возвращает тиканье часов в целых минутах для указанного часового пояса. Эти часы всегда будут иметь поляnano-of-second иsecond-of-minute равными нулю:

ZoneId zoneId = ZoneId.of("Asia/Calcutta"); Clock clock = Clock.tickMinutes(zoneId); System.out.println(clock.instant());

То же самое можно сделать, используяtick():

Clock clock = Clock.tick(Clock.system(ZoneId.of("Asia/Calcutta")), Duration.ofMinutes(1));

2.10. withZone()с

Этот метод возвращает копию этих часов с другим часовым поясом.

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

ZoneId zoneSingapore = ZoneId.of("Asia/Singapore"); Clock clockSingapore = Clock.system(zoneSingapore); System.out.println(clockSingapore.instant()); ZoneId zoneCalcutta = ZoneId.of("Asia/Calcutta"); Clock clockCalcutta = clockSingapore.withZone(zoneCalcutta); System.out.println(clockCalcutta.instant());
2018-04-07T17:55:43.035Z 2018-04-07T17:55:43.035Z

Источник

Реализация простых часов

На вход подаётся число секунд, которое прошло с момента начала суток (00:00:00). Выведите текущее время в формате ЧЧ:ММ:СС.

Примечание 1. Используйте 24-часовой формат.

Примечание 2. Для преобразования типа int в тип String (если это понадобится) можно использовать встроенный служебный метод String.valueOf(num), который преобразует число num в строку «num».

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
import java.util.Scanner; class MySolution { public static void main(String[] args) { Scanner sr = new Scanner(System.in); int a = sr.nextInt(); int a1 = sr.nextInt(); a = a%86400; a1 = a1%86400; int h = (a /3600); int m = ((a % 3600)/60); int s =((a % 3600)%60); int h1 = (a /3600); int m1 = ((a % 3600)/60); int s1 =((a % 3600)%60); System.out.format ("%02d"+":"+"%02d"+":"+"%02d", h,m,s); System.out.format ("%02d"+":"+"%02d"+":"+"%02d", h1,m1,s1); } }

резюме компилятора:
Exception in thread «main» java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:911)
at java.util.Scanner.next(Scanner.java:1534)
at java.util.Scanner.nextInt(Scanner.java:2164)
at java.util.Scanner.nextInt(Scanner.java:2123)
at MySolution.main(Main.java:8)

Вопросы:
1.8,9 строки списала с комментариев, смысла не понимаю. Почему остаток?Логичнее, кажется, a <=(меньше или равно)86400
2.Если сделать только Sample Input 1, выводит правильный ответ.
3. Зачем менять формат, если там и там числа?

Реализация подобия солнечных часов
Ребята помогите пожалуйста. Я начинающий программист, вообщем нужна программа что то наподобие.

Реализация цифровых часов на языке ST
Готовых решений не прошу, просто подскажите примерно как должно выглядеть Среда пусть будет.

C и OpenGl: реализация аналоговых часов
возникла проблема, когда писала программу, которая должна вывести аналоговые часы,- библиотеки.

Реализация резидентных часов и календаря
Всем привет! Я здесь новичок, но вижу Ваш форум просто "чудо" — всем помогаете) Вот и решился.

Реализация часов в виде вращающихся кубов
http://www.youtube.com/watch?v=l967Eg6JpNk l967Eg6JpNk

Лучший ответ

Сообщение было отмечено matana как решение

Решение

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
import java.util.Scanner;// подключаем клас сканенра /** * @author і++ */ class H1 { public static void main(String[] args){ Scanner sc = new Scanner(System.in);//активируем сканер Time t = new Time(sc.nextLong()); t.printTime(); } protected static class Time { int h = 0; int m = 0; int s = 0; public Time(long sec) { if(sec  60l){ s = (int)sec; }else if(sec  60l * 60l){ m = (int)(sec / (60) ); sec -= m * 60; s = (int)(sec); }else{ h = (int)(sec / (60 * 60)); sec-= h * (60 * 60); m = (int)(sec / (60) ); sec -= m * 60; s = (int)(sec); } } public void printTime(){ System.out.println((h  10 ? "0" + h : h) + ":" + (m  10 ? "0" + m : m) + ":" + (s  10 ? "0" + s : s)); } } }

Источник

Create a Digital Clock in Java

In this tutorial, we’ll learn how to create a digital clock in Java that looks like the one below:

Create digital clock in Java

To create GUI based applications, Java provides Swing framework which is a graphical user interface framework that includes a set of classes that are powerful and flexible.

To create a digital clock, we will use JFrame, JLabel, and Timer class from the Swing framework. The JFrame class is used to construct a top-level window for a Java application. The JLabel class is used to display a string and the Timer class is used to fire events at specified intervals.

The following code creates and displays a digital clock in Java:

 >); timer.start(); > public static void main(String args[]) < display(); >> 

Источник

Читайте также:  Child theme content php
Оцените статью