public void actionPerformed(ActionEvent e) {
int count = 0; // 每次點擊重置為 0!
if (e.getSource() == confButton) {
// ...
if (guessnumber == number) {
Rightlb.setText("猜對了!你一共猜了" + count + "次");
}
}
}
count 宣告在 actionPerformed 方法內部,屬於**區域變數**,每次事件觸發都會重新初始化為 0。
class GameFrame extends JFrame implements ActionListener {
// ... 其他欄位
private int guessCount = 0; // 成員變數,生命週期 = 視窗實例
public void actionPerformed(ActionEvent e) {
if (e.getSource() == getButton) {
number = (int)(Math.random() * 100) + 1;
guessCount = 0; // 重新開始遊戲歸零
getButton.setEnabled(false);
}
if (e.getSource() == confButton) {
guessCount++; // 遞增
int guessnumber = Integer.parseInt(jtf.getText());
if (guessnumber > number) Rightlb.setText("猜大了!");
else if (guessnumber < number) Rightlb.setText("猜小了!");
else Rightlb.setText("猜對了!你一共猜了" + guessCount + "次");
}
}
}
計數器需宣告為**成員變數**,並在「新遊戲」按鈕歸零、「確定」按鈕遞增。區域變數無法跨事件處理保持狀態。