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つのデッキについてです!