Fer*_*305 0 java collections shuffle
我正在开发一个涉及Card对象和Deck对象的Java项目.当我制作Deck时,我有一个ArrayList,其中包含所有52张卡片.但是,当我在Collections中使用shuffle方法时,四个Card对象变为null.Card类工作正常,当我在shuffle方法之前打印出Deck时,所有52张卡都在那里.一旦我在甲板上洗牌,那就是我得到四个空方法的时候.
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);
}
Run Code Online (Sandbox Code Playgroud)
}
ars*_*jii 10
你的if陈述是有缺陷的,你需要括号:
if (clubs < 14) { // <--
c = new Card ("Clubs", clubs);
clubs++;
pack.add(c);
} // <--
Run Code Online (Sandbox Code Playgroud)
其他的if陈述也是如此makeDeck.
请注意,在Java中,如果不包括大括号,那么只有第一个语句if将包含在其主体中.
例如:
// 1
if (condition)
A
B
Run Code Online (Sandbox Code Playgroud)
相当于
// 2
if (condition) {
A
}
B
Run Code Online (Sandbox Code Playgroud)
在确定-statement正文中包含的内容时,代码段1 之前A和B之后的空格不相关if.
| 归档时间: |
|
| 查看次数: |
266 次 |
| 最近记录: |