2016-03-31 15 views
0

私はJavaでもっと堪能しようとしています。私は基本的なスキルをテストするための簡単なカードゲームを作っています。私はデッキクラスで問題を見つけました。 forループは、私のarraylistに新しいカードオブジェクトを作成しているわけではありません。 getTotalCardsを呼び出すと、arraylistのサイズは常に0になります。私が間違っていることのアイデアは何ですか?JavaでArrayList初心者エラー

メインクラス:

package gameofcards; 

import java.util.Random; 
import static gameofcards.Card.*; 

public class GameOfCards { 

public static void main(String[] args) { 
    Deck d1 = new Deck(); 
    System.out.println(d1.getTotalCards()); 

    } 
} 

デッキクラス:

package gameofcards; 

import java.util.ArrayList; 

public class Deck { 
private ArrayList<Card> cards; 

public Deck(){ 
    cards = new ArrayList<Card>(); 

    for(int i = 1; i >=4; i++){ 
     for(int j = 1; j >=13; j++){ 
      cards.add(new Card(i,j)); 
     } 
    } 

} 

public int getTotalCards(){ 
    return cards.size(); 
} 

}

カードのクラス:

package gameofcards; 


public class Card { 

private int Suite; 
private int Rank; 

public static final int Club = 1; 
public static final int Diamond = 2; 
public static final int Hearts = 3; 
public static final int Spade = 4; 

public static final int Jack = 10; 
public static final int Queen = 11; 
public static final int King = 12; 
public static final int Ace = 13; 

public void setSuite(int cardSuite){ 
    Suite=cardSuite; 
} 

public int getSuite(){ 
    return Suite; 
} 

public void setRank(int cardRank){ 
    Rank=cardRank; 
} 

public int getRank(){ 
    return Rank; 
} 

public Card(int Suite, int Rank){ 
    this.Suite = Suite; 
    this.Rank = Rank; 
} 

public String cardSuite(){ 
    switch(Suite){ 
     case Club: return "Clubs"; 
     case Diamond: return "Diamonds"; 
     case Hearts: return "Hearts"; 
     case Spade: return "Spades"; 
     default: return "Joker"; 
    } 
} 

public String cardRank() { 
    switch(Rank){ 
     case 2: return "2"; 
     case 3: return "3"; 
     case 4: return "4"; 
     case 5: return "5"; 
     case 6: return "6"; 
     case 7: return "7"; 
     case 8: return "8"; 
     case 9: return "9"; 
     case 10: return "Jack"; 
     case 11: return "Queen"; 
     case 12: return "King"; 
     case 13: return "Ace"; 
     default: return "Joker"; 
    } 
} 

} 

答えて

2

ループのための条件は間違っています。 = 4 <とj < = 13

for(int i = 1; i <=4; i++){ 
    for(int j = 1; j <=13; j++){ 
     cards.add(new Card(i,j)); 
    } 
    } 
2

あなたのループ条件が間違っている私でなければなりません。

の代わりに:

for(int i = 1; i >=4; i++){ 

それは次のようになります。

for(int i = 1; i <=4; i++){ 

と内側のループ条件と同様の問題。 iは、それが最初の場所でのループに入ったことがないので、それはカードを追加することはなかった4.

以下でありながら

あなたがループにしたいです。

これを理解する簡単な方法は、printlnをループ内に配置し、何が起こるかを確認することでした。あなたはそれが決して印刷されないことに気づいたでしょう。