別のクラスからメソッドを呼び出す方法?

A.スリランカ:

だから私は、OOPでの新人だと私は現在、別のメソッドから関数を使用して、問題を抱えています。以下のクラスは、カードゲームのメインクラスです。ここでは、ゲームのクラスからオブジェクトを作成することで、カードのデッキを作成します。その後、作成したデッキでゲームを開始し、デッキのサイズを印刷する必要があります。

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
    }

}

以下のクラスは、ゲームのクラスです。ゲームが起動すると、それが作成されたデッキのサイズを印刷する必要があります。

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
}

以下のクラスは、それが実際にデッキを作成し、そのデッキのサイズを返すメソッドを有するデッキクラスです。

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

finalクラスは、カードのクラスです。

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

それはそれを修正するために何をすべきか理解によるので、缶誰ショーの私の不足のために明白な誤りでなければなりませんか?

GhostCat敬礼モニカC.:

あなたはデッキクラスのコンストラクタ内のローカル変数として「メイン」を宣言しました。意味することは、そのコンストラクタの本体でのみ表示されます。

あなたはにローカル変数をオンにする必要があるフィールドの代わりにあなたのクラスの。唯一のそれはあなたのクラスの他の場所で「可視」になります!非常に同じことが、あなたのカードのクラスのスイートとランクのために正しくやりました!

そしてもちろん、プレイ方法はすべきではない静的です!ゲームではなく、「すべてのそれらの」1つのデッキについてです!

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=234929&siteId=1