gpt4 book ai didi

java - 独立程序中的公共(public)变量

转载 作者:行者123 更新时间:2023-12-01 11:17:25 25 4
gpt4 key购买 nike

我正在编写一个小型 Java 程序,它随机发牌,然后将它们显示在屏幕上的窗口中。

自从我使用 NetBeans 以来,GUI 就为我启动了,我一直在编写随机选择牌的方法,设置一个数组来存储牌是否已经发过等等,所有这些在 NetBeans 构建 JFrame 时为我设置的同一个类中。

我想将所有非 GUI 代码移至其自己的类中,然后根据需要将数据传递回 GUI 类以显示卡片,但我不确定共享数据的最佳方式两个类(class)之间。

我了解 set/get 方法,并且我知道我可以创建公共(public)类级变量,但我读过的所有内容都告诉我要尽可能避免这两种方法。

现在我有一个方法可以为每张发的牌生成一个 1 到 52 之间的 int。 1 = 黑桃 A,2= 2 黑桃,等等。一旦 GUI 有了这个数字,它就可以在屏幕上的适当位置显示适当的牌(或者至少在我对 GUI 进行编码后它能够显示)事物的侧面)。如果我想将该整数值传递给 GUI 类,然后根据该值在屏幕上显示特定的卡片,我应该怎么做?

在我看来,公共(public)变量会让这变得容易,就像一个简单的 get 方法一样......但是为了避免这些选项,还有其他方法吗?

如果有帮助的话,我可以提供代码片段。

最佳答案

这是您可以开始使用 OO 概念实现此想法的一种方法。

创建一个Card类来代表一张卡片。

public class Card {
// FIELDS
// card name
private final String name;
// card value (number)
private final int value;
// another arbitrary value to demonstrate setter
private Object arbitraryValue;


public Card(String name, String value) {
this.name = name;
this.value = value;
}

public String getName() {
return this.name;
}

public int getValue() {
return this.value;
}

public Object getArbitraryValue() {
return this.arbitraryValue;
}

public void setArbitraryValue(Object arbitraryValue) {
this.arbitraryValue = arbitraryValue;
}
}

创建一个 CardManager 类来保存与处理卡片相关的方法(例如实用方法和卡片数据存储)

public class CardManager() {
private List<Card> cards = new ArrayList<Card>();

public void addCard(Card card) {
this.cards.add(card);
}

// and so on...your methods here.
}

最后,为 GUI (CardGUI) 管理创建一个类,并使用其他类来管理它。

你可以这样做:

public class CardGUI() {
public static void main(String[] args) {
// create your GUI and put your logic here...
// also use your other classes, perhaps like so.
Card card = new Card("One", 1);
CardManager cardManager = new CardManager();
cardManager.addCard(card);

// From there you can manage your cards through other classes.
}

希望这有助于/演示如何在遵循标准的类之间共享数据。

编辑:要准确回答您如何获取该值的问题,请参阅上面的 Card 类。您只需创建一张新卡 (Card card = new Card("name", intval);),然后使用方法 Card#getValue() 获取该值并将其显示在 GUI 中。

关于java - 独立程序中的公共(public)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31644540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com