java - 如何调用另一个类的方法?

标签 java oop

所以我是 OOP 的菜鸟,目前在使用其他方法中的函数时遇到问题。下面的类是纸牌游戏的主类。在这里,它通过从 Game 类创建一个对象来创建一副纸牌。然后它会使用创建的牌组开始游戏,并应打印牌组的大小。

public class Run {

public static void main(String[] args) {

    Game game;
    System.out.println("Welcome!");
    play = true;
    while (play) {
        game = new Game(3); //Create deck of card based on number of ranks given
        game.play(); //Starts the game with deck of card
    }

}

下面的类是Game类。当游戏开始时,它应该打印创建的牌组的大小。

public class Game {
public Game(int ranks)
{
    Deck Main = new Deck(ranks);
}
public static void play()
{
    System.out.println(Main.size()); //Where the error occurs
}

下面的类是 Deck 类,它实际上创建了牌组,并有一个返回该牌组大小的方法。

public class Deck {

private ArrayList<Card> cards;

public Deck(int range) {
    cards = new ArrayList<Card>();
    for (int i=1; i<=range; i++)
    {
        Card card = new Card(1, i);
        Card card2 = new Card(2, i);
        Card card3 = new Card(3, i);
        Card card4 = new Card(4, i);
        cards.add(card);
        cards.add(card2);
        cards.add(card3);
        cards.add(card4);
    }
}
public int size() 
{
    int num=cards.size();
    return num;
}

最后一个类是 Card 类。

public class Card {
private int rank;
private int suit;
public Card(int s, int r)
{
    suit=s;
    rank=r;
}
public int getSuit()
{
    return suit;
}
public int getRank()
{
    return rank;
}

由于我缺乏理解,这一定是一个明显的错误,所以有人可以展示如何修复它吗?

最佳答案

您在 Deck 类的构造函数中将“Main”声明为局部变量。这意味着它仅在该构造函数的主体中可见。

您需要将局部变量转换为类的字段。只有这样,它才会在类(class)的其他地方“可见”!与您在卡牌类别中正确执行套件和等级的操作完全相同!

当然,播放方法不应该是静态的!游戏只涉及一副牌,而不是“全部”!

关于java - 如何调用另一个类的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54413774/

相关文章:

java - Java 中的 MongoDB 文档更新 : coding error or driver bug?

java - 使用输出流发送文件长度并使用输入流接收长度和字节 [] 以将帧从一个设备流式传输到另一个 Android/Java

java - JDBC 最佳实践

java - 处理数据库子类的最佳设计?

java - 如何通过其图形拖动选项卡?

java - 怎么这么快(背后的算法或逻辑)

java - Google Play 多人游戏 : No connection to other players

java - 子类会继承私有(private)字段吗?

java - “折扣”功能无法正常工作

javascript - 对面向对象的javascript的困惑