如何用Java制作时钟?

时间:2017-02-14 17:03:44

标签: java

我是Stack Overflow的新手,也是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;
			}
		}
	}
	
	
		
}
		

这是我想用来打印时钟的主要类:

public class TimeViewer {

	public static void main(String[] args) {

	}

}

感谢任何和所有帮助!

5 个答案:

答案 0 :(得分:1)

很难说出你的问题究竟是什么,但这一行:

seconds = seconds ++;

不会增加秒数。我试过了:

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

打印0。

原因是++后缀在将值赋值给变量后应用增量,因此您将失去增量。

尝试简单

seconds++;

答案 1 :(得分:0)

您可以在Time函数中创建一个toString函数。它创建一个包含3个整数的字符串,您可以在主页中打印它。

代码TimeViewer:

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

代码Main:

<x

我看了你的代码,看起来你在构造函数中做了一些事情而没有链接到类数据(初始)。

答案 2 :(得分:0)

我不太确定你具体要求的是什么,但是你一般都会请求帮助,我发现你的代码存在一些我可以提供帮助的问题。

您的main方法为空,因此运行代码时不会发生任何事情。尝试在main方法中创建一个TimeComponent实例,并用它调用Tick()以查看会发生什么。

在TimeComponents类的构造函数中,您已将输入“initialHour,initialMinutes和initialSeconds”设置为零。这不会声明您的“分钟,秒和小时”变量,并且在运行Tick()方法时会导致错误。在构造函数中,尝试将每个变量设置为相应的输入变量以避免这种情况,如下所示:

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

要使用++运算符递增,除非将++放在要增加的变量名称旁边,否则它将无效,如下所示:

    hours++;

我希望这有助于您解决问题。祝你好运!

答案 3 :(得分:0)

我希望这会对您有所帮助。 抱歉,如果您认为还有一些额外的变量。我实际上使用它们来实现我现在正在尝试的模拟时钟。

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[]={"One ","Two ","Three ","Four ","Five ","Six ","Seven ","Eight ","Nine ","Ten ","Eleven ","Twelve ","Thirteen ","Fourteen ","Fifteen ","Sixteen ","Seventeen ","Eighteen ","Nineteen ","Twenty ","Thirty ","Fourty ","Fifty "};
        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);
    }
}

答案 4 :(得分:0)

这是一个简单的时钟。

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

}