【发布时间】:2016-04-22 19:28:44
【问题描述】:
我正在尝试创建一个类,让您可以重复某项任务一定次数,或者直到满足某个条件。在我继续之前,请考虑以下几点:
int test = 0;
还有我的复读课:
public static abstract class Repeat {
public void loop(int c) {
for (int i = 0; i < c; i++) {
run();
}
}
public void until(boolean c) {
while (!c) {
run();
}
}
public abstract void run();
}
我遇到的问题是until(boolean c) 方法,不是loop(int c) 方法。 loop 方法工作得很好,如下所示:
public static void main(String[] args) {
new Repeat() {
@Override
public void run() {
test += 1;
System.out.println(test); // so I know what test currently is
}
{
loop(10);
}
};
}
这会将 test 更改 1、10 次。控制台证明是正确的:
1
2
3
4
5
6
7
8
9
10
现在解决这个问题。如果我尝试使用 until() 方法,如果我没有在几秒钟内终止启动,它将变得迟钝,因为它会无限增加test。
public static void main(String[] args) {
new Repeat() {
@Override
public void run() {
test += 1;
System.out.println(test); // so I know what test currently is
}
{
loop(10);
}
};
new Repeat() {
@Override
public void run() {
test -= 1;
System.out.println(test);
}
{
until(test == 0);
}
};
}
这将永远持续下去。我的假设是因为在 (test == 0) 中传递的布尔值 永远不会更新,所以,如果这是正确的,任何人都可以告诉我怎么更新呢?如果我的假设是错误的,是什么原因造成的,我该如何解决?
感谢任何人真正阅读了我“输入”的每个单词(主要是复制粘贴)。
【问题讨论】:
标签: java loops boolean repeat evaluation