我是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) {
}
}
感谢任何和所有帮助!
答案 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());
}
}
}