gpt4 book ai didi

java - 能够 "tick"的时钟

转载 作者:行者123 更新时间:2023-11-30 06:41:49 27 4
gpt4 key购买 nike

我正在使用 Java 编写一个时钟程序,该程序能够“滴答作响”,但它存在问题。我认为它与 getter 和 setter 或 toString() 方法有关。

计数器类

package clock;

public class Counter
{
private int _count;
private String _name;

public String getName(){return _name;}
public void setName(String _name){this._name = _name;}

public int getCount(){return _count;}
public void setCount(int _count){this._count = _count;}

public Counter(String name)
{
_name = name;
_count = 0;
}

public void Increment()
{
_count++;
}

public void Reset()
{
_count = 0;
}
}

时钟类

package clock;

import java.util.Calendar;


public class Clock {
private Counter _secCounter;
private Counter _minCounter;
private Counter _hrCounter;

public Clock()
{
this._secCounter = new Counter("Seconds");
this._minCounter = new Counter("Minutes");
this._hrCounter = new Counter("Hour");

Calendar currentTime = Calendar.getInstance();
_secCounter.setCount(currentTime.get(Calendar.SECOND));
_minCounter.setCount(currentTime.get(Calendar.MINUTE));
_hrCounter.setCount(currentTime.get(Calendar.HOUR));
}

public Counter SecCounter(){return _secCounter;}
public Counter MinCounter(){return _minCounter;}
public Counter HrCounter(){return _hrCounter;}

public String Tick()
{
_secCounter.Increment();
if (_secCounter.getCount() == 60)
{
_secCounter.Reset();
_minCounter.Increment();
}

if (_minCounter.getCount() == 60)
{
_minCounter.Reset();
_hrCounter.Increment();
}

if (_hrCounter.getCount() == 24)
{
_hrCounter.Reset();
}

return _hrCounter.toString() + ":" + _minCounter.toString() + ":" + _secCounter.toString();
}

@Override
public String toString()
{
return _hrCounter.toString() + ":" + _minCounter.toString() + ":" + _secCounter.toString();
}
}

主类

package clock;

public class Main {

public static void main(String[] args)
{
Clock myClock = new Clock();
for (int i = 0; i < 10; i++)
{

String currentTime = myClock.Tick();
System.out.println(currentTime);
i = 0;
}


}
}

输出

clock.Counter@5c647e05:clock.Counter@33909752:clock.Counter@55f96302

对 Java 有点陌生,正在从 C# 翻译代码。感谢您的帮助!

最佳答案

据我所知,您需要调用 _**Counter.getCount(),而不是 toString()。您从未覆盖 toString 方法,因此要取回时钟的值,您需要使用您编写的用于获取计数器值的方法。如果您希望它也报告其名称,则需要覆盖 Counter 中的 toString() 方法以返回类似 return getName() + ": "+ getCount();

关于java - 能够 "tick"的时钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44275542/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com