我有一个变量值,用于跟踪数字是奇数还是偶数。
我初始化了一个
int value = 0;
变量“value”现在为0,点击2次后,系统会打印出“even”,一秒后,变量“value”自增1;
<变量“value”现在是 1,它是奇数,所以它会打印出“奇数”,一秒钟后,变量值将递增 1;
变量“值”现在为 2,它是偶数,因此它将再次允许用户在 JFrame 上单击 2 次。点击2次后,系统会打印出“even”,一秒后, 变量“value”将递增 1;
变量“value”现在是 3,它是奇数,所以它会打印出“奇数”,一秒钟后,变量值将递增 1;
等等……
这一直持续到我关闭程序。
我将“值”放入我的计时器中并递增它,但是“值”在倒计时后没有递增。为什么它不增加?请帮忙。
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(value%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
值
clicked++;
if(clicked == 2) {
System.out.println("even");
timer.start();
clicked = 0;
}
否则你将永远无法再次触发“偶数”
部分......
关于java - 递增数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24927025/