簡體   English   中英

如果陳述無法正常運作

[英]If Statements aren't working properly

我只是在弄亂Java上的按鈕,並試圖只是簡單地創建一個非常愚蠢的“ Cookie Clicker”版本。但是,偵聽器類中的if語句無法正常工作。 主類代碼:

import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JFrame;

public class CookieClickerGame {
    private static final int FRAME_WIDTH = 200;
    private static final int FRAME_HEIGHT = 200;

    public static void main(String[] args) {
        JPanel panel = new JPanel();

        JFrame frame = new JFrame();
        JButton cookie = new JButton("Cookie");
        JButton grandma = new JButton("Grandma");
        panel.add(cookie);
        panel.add(grandma);
        frame.add(panel);

        ActionListener listener = new CookieClicker();
        cookie.addActionListener(listener);

        ActionListener listener2 = new CookieClicker();
        grandma.addActionListener(listener2);

        frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

偵聽器類代碼:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JOptionPane;

public class CookieClicker implements ActionListener {
    int cookies;
    public void actionPerformed(ActionEvent event) {
        if (event.getActionCommand().equals("Cookie")) {
            cookies++;
            System.out.println(cookies + " Cookies");
        } else if (event.getActionCommand().equals("Grandma") && cookies >= 10) {
            System.out.println("+1 Grandma");
        } else {
            JOptionPane.showMessageDialog (null, "Not Enough Cookies", "You're Poor", JOptionPane.INFORMATION_MESSAGE);
        }
    }
}

我的問題是Grandma部分,什么也沒說“ +1奶奶”,即使我有足夠的餅干,它仍然會告訴我我太窮了。 代碼有什么問題?

您有兩個不同的CookieClicker實例。 使用靜態成員或讓偵聽器的操作更新祖母的cookie值。

如果使用后一種選項,則可能有兩個單獨的類,即CookieClicker和GrandmaClicker。 然后CookieClicker.actionPerformed()可以調用GrandmaClicker.IncrementCookies()或類似名稱。

變更:

int cookies;

至 :

static int cookies;

這樣您的所有對象都只有一個cookie字段,並且每次執行操作時它都會更改。 使用第一個或第二個按鈕。

將cookie計數器更改為static:

static int cookies;
ActionListener listener = new CookieClicker();
cookie.addActionListener(listener);

ActionListener listener2 = new CookieClicker();
grandma.addActionListener(listener2);

您正在為按鈕創建兩個不同的偵聽器。

listener被點擊第一按鈕,並且當被通知listener2被點擊第二按鈕時被通知。

只需對兩個按鈕使用相同的偵聽器:

ActionListener listener = new CookieClicker();
cookie.addActionListener(listener);

grandma.addActionListener(listener);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM