我的教授希望我这样做:
使用下面的 Counter 接口编写多个可互换的计数器
public interface Counter {
/** Current value of this counter. */
int value();
/** Increment this counter. */
void up();
/** Decrement this counter. */
void down();
}
开发以下内容:
一个接口 ResetableCounter,除了支持 Counter 的消息外,还支持消息 void reset()。
这是我所做的:
public interface ResetableCounter {
void reset();
int value();
void up();
void down();
}
一个名为 BasicCounter 的 ResetableCounter 实现,它从值 0 开始,分别向上和向下计数 +1 和 -1。
这是我所做的:
public class BasicCounter implements ResetableCounter
{
int counterVariable = 0;
public static void main(String[] args)
{
BasicCounter cnt = new BasicCounter();
cnt.up();
cnt.down();
System.out.printf("The value is %d", cnt.counterVariable);
}
public void reset() {
this.counterVariable = 0;
}
public int value() {
return this.counterVariable;
}
public void up() {
++this.counterVariable;
}
public void down() {
--this.counterVariable;
}
}
一个名为 SquareCounter 的 ResetableCounter 实现,它从值 2 开始,通过对其当前值进行平方来计数,并通过对其当前值的平方根进行计数(始终向上舍入,即 1.7 舍入为 2,就像 1.2 被舍入一样到 2)。
这是我所做的:
public class SquareCounter implements ResetableCounter {
int counterVariable = 2;
public static void main(String[] args) {
SquareCounter cnt = new SquareCounter();
cnt.up();
cnt.down();
double d = Math.ceil(cnt.counterVariable);
System.out.printf("The value is %f", d);
}
public void reset() {
this.counterVariable = 0;
}
public int value() {
return this.counterVariable;
}
public void up() {
Math.pow(this.counterVariable, 2);
}
public void down() {
Math.sqrt(this.counterVariable);
}
}
ResetableCounter 的一个实现称为 FlexibleCounter,它允许客户端在创建计数器时指定起始值以及附加增量(用于向上计数)。例如 new FlexibleCounter(-10, 3) 将产生一个当前值为 -10 的计数器;在调用 up() 之后,它的值将是 -7。
我还没有弄清楚这一点。
您的所有实现都应该是可重置的,并且每个实现都应该包含一个 main 方法,该方法使用 assert 测试实现是否按预期工作,就像我们在讲座中所做的那样(这是一种简单的单元测试方法,我们将在稍后讨论)。
到目前为止,我需要对我的工作发表评论。你觉得够了吗?我如何在可复位计数器上工作?我对 JAVA 很陌生,而且自从我使用 C++ 以来已经很久了。