Java 递增数字
我有一个变量值,它跟踪数字是奇数还是偶数Java 递增数字,java,swing,timer,mouselistener,Java,Swing,Timer,Mouselistener,我有一个变量值,它跟踪数字是奇数还是偶数 I初始化aint值=0 变量“value”现在为0,点击2次后,系统打印“偶数”,1秒后变量“value”递增1 变量“value”现在是1,它是奇数,所以它将输出“odd”,一秒钟后,变量值将增加1 变量“value”现在是2,它是偶数,因此它将再次允许用户在JFrame上单击2次。单击2次后,系统将打印“偶数”,1秒后,将显示 变量“value”将增加1 变量“value”现在是3,它是奇数,所以它会打印出来,“odd”,一秒钟后,变量值会增加1 等
int值=0代码>
我把“值”放在我的计时器内,并使其递增,但是“值”在倒计时后不会递增。为什么它不是递增的?请帮忙
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
@SuppressWarnings("serial")
public class OnClickLesson extends JFrame {
private int value = 0, clicked = 0, countdown = 1;
private Timer timer = new Timer(1000, null);
public OnClickLesson() {
timer = new Timer(1000, new countDownTimer());
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
if(value%2 == 0) {
clicked++;
if(clicked == 2) {
System.out.println("even");
timer.start();
}
}
}
});
if(value%2 == 1) {
System.out.println("odd");
timer.start();
}
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
pack();
setSize(400,600);
setLocationRelativeTo(null);
setVisible(true);
}
private class countDownTimer implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
if (countdown == 0) {
timer.stop();
countdown = 1;
value++;
}
else {
System.out.println("Countdown " + countdown--);
}
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new OnClickLesson();
}
});
}
}
我认为您的代码中有一个小的逻辑错误 如果你看一下这个部分
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
if(value%2 == 0) {
clicked++;
if(clicked == 2) {
System.out.println("even");
timer.start();
}
}
}
});
if(value%2 == 1) {
System.out.println("odd");
timer.start();
}
我相信if(值%2==1){…
语句应该在mousePressed
方法中
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
if(value%2 == 0) {
clicked++;
if(clicked == 2) {
System.out.println("even");
timer.start();
}
} else if(value%2 == 1) {
System.out.println("odd");
timer.start();
}
}
});
这样,当调用mousePressed
时,它可以同等地计算这两种状态
此外,我认为您可能应该重置单击的值
clicked++;
if(clicked == 2) {
System.out.println("even");
timer.start();
clicked = 0;
}
否则您将无法再次触发“偶数”
部分…从我的测试中,当我双击帧时,计时器启动,它倒计时并递增值
,并将倒计时
设置为1
。此时无法重新启动计时器,因为该值现在是奇数。。。