Comment appeler la méthode d'une autre classe?

A. Sri:

Donc, je suis un débutant à la POO et j'ai actuellement du mal à l'aide d'une fonction d'une autre méthode. La classe ci-dessous est la classe principale pour un jeu de cartes. Ici, il crée un jeu de cartes en créant un objet de la classe de jeu. Il commence alors le jeu avec la plate-forme créée et devrait imprimer la taille de la plate-forme.

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
    }

}

La classe ci-dessous est la classe de jeu. Quand le jeu commence, il doit imprimer la taille de la plate-forme créée.

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
}

La classe ci-dessous est la classe de plate-forme où il crée en fait la plate-forme et a une méthode qui retourne la taille de cette plate-forme.

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;
}

La dernière classe est la classe de carte.

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;
}

Il doit être une erreur évidente en raison de mon manque de compréhension si quelqu'un peut montrer ce qu'il faut faire pour y remédier?

GhostCat de Monica C.:

Vous avez déclaré « Main » comme une variable locale dans le constructeur de la classe de plate-forme. Cela signifie qu'il est visible dans le corps de ce constructeur.

Vous devez activer la variable locale dans un champ de votre classe à la place. Alors seulement, il devient « visible » dans d' autres endroits de votre classe! La même chose que vous avez correctement pour la suite et le rang dans la classe de votre carte!

Et bien sûr , la méthode de lecture ne doit pas être statique! Un jeu est sur un pont, pas « tous »!

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=234930&siteId=1
conseillé
Classement