Card 개체와 Deck 개체가 관련된 Java 프로젝트에서 작업하고 있습니다. 내 덱을 만들었을 때 52 개의 카드가 모두 들어있는 ArrayList가 있습니다. 그러나 컬렉션에서 셔플 메서드를 사용하면 네 개의 Card 객체가 null로 바뀌고 있습니다. Card 클래스는 잘 작동하며 셔플 메서드 이전에 덱을 인쇄하면 52 개의 카드가 모두 있습니다. 일단 카드를 덱에서 섞으면 네 개의 널 (null) 메소드가 생깁니다.컬렉션 Shuffle Method에는 Null 개체가 있습니다.
import java.util.ArrayList;
import java.util.Collections;
public class Deck {
public ArrayList<Card> pack = new ArrayList<Card>();
public int spades = 1;
public int hearts = 1;
public int diamonds = 1;
public int clubs = 1;
public String s = "spades";
public String h = "hearts";
public String cl = "clubs";
public String d = "diamonds";
public Deck(){
}
public void makeDeck()
{
for (int i = 0; i < 14; i++)
{
Card c = null;
if (clubs < 14)
c = new Card ("Clubs", clubs);
clubs++;
pack.add(c);
if (spades < 14)
c = new Card ("Spades", spades);
spades++;
pack.add(c);
if (hearts < 14)
c = new Card ("Hearts", hearts);
hearts++;
pack.add(c);
if (diamonds < 14)
c = new Card ("Diamonds", diamonds);
diamonds++;
pack.add(c);
}
}
public void showDeck()
{
for (int i = 0; i < 52; i++)
{
System.out.println(pack.get(i));
}
}
public String CardNumber (int index)
{
return (pack.get(index).toString());
}
public int Number (int index)
{
return pack.get(index).CNum();
}
public void Shuffle()
{
Collections.shuffle(pack);
}
}
간단히 말해, if 문 본문 주위에 중괄호가 있어야합니다. 코드의 형식을 지정하는 IDE를 얻으면 현재 가지고있는 것을 볼 수 있습니다. 자바는 파이썬과 같지 않습니다. 블록이 끝나는 곳을 결정하기 위해 공백을 사용하지 않습니다. –
'Collections # suffle'은 여기에 범인이 아닙니다. –
1에서 14까지의 숫자가 13 개 밖에 없습니다. 여기서 셔플을 호출하기 전에 4 개의 'null'값이 추가 된 것을 볼 수 있기 때문에 디버거를 사용하면 도움이됩니다. –