我有一个计数器在循环中计数到4。 并且计数器计算这些循环中有多少已经通过。
在下面的代码中,两个标签在计数1时将setVisibility标记为true。 但我希望label1出现在count 1,而label2出现在count 2。
我的问题是;
更有效的是,只用if语句设置标签visibilty,或者 我可以多次使用do-while语句吗?
class counters2 implements ActionListener
{
int count = 0, alternativecounter = 0;
public void actionPerformed(ActionEvent e)
{
int fakeSecond = (count++ % 4) + 1;
if(fakeSecond == 1)
{
alternativecounter += 1;
if(alternativecounter == 3)
{
do
{
label1.setVisible(true);
}while(count == 1);
do
{
label2.setVisible(true);
}while(count == 2);
}
}
}
}
答案 0 :(得分:4)
do while
适用于循环 - 即重复执行代码。您是否注意到,如果alternativecounter
为3
,代码会进入无限循环?此外,do while
的正文总是至少执行一次,所以(无限循环)此代码不正确。
如果要尝试有条件执行的循环代码不应该执行多次(在这里,很明显它确实不应该执行),使用if
语句。< /强>
正如其他人所说,这也是一种尝试优化代码的荒谬方式 - 它是premature optimization和micro-optimization。
答案 1 :(得分:2)
您编写的代码要么不执行do / while,要么导致无限循环。不要担心效率,并努力使这些代码可读和正确。
答案 2 :(得分:2)
事件侦听器应该只处理单个事件。因此,在事件发生时,您检查变量的状态,然后进行相关处理。
所以你永远不会使用do / while。事实上,在您发布的代码中,您引入了无限循环。这个无限循环将反过来冻结GUI,因为它无法响应其他事件。