使用链表设计一副牌

时间:2016-03-31 23:45:56

标签: java

该计划的目标是使用链表设计一副牌。 我的代码在运行时不打印任何内容。 下面是我的代码

节点类:

public class Node
{
private Comparable data;
private Node next;
public Node()
{
next = null;
}
public Node(Comparable c)
{
data = c;
next = null;
}
public Node(Comparable c, Node n)
{
data = c;
next = n;
}
public Comparable getData()
{
return data;
}
public void setData(Comparable c)
{
data = c;
}
public Node getNext()
{
return next;
}
public void setNext(Node n)
{
next = n;
}

}

LinkedList类:

public class LinkedList
{
private Node first = null;
private Node current = null;
private Node pre = null;
public boolean isEmpty()
{
return true;
}
public boolean contains(Comparable item)
{
current = first;
pre = null;
while ((current != null)&&(current.getData().compareTo(item) < 0))
{
pre = current;
current = current.getNext();
}
return ((current != null) && (current.getData().compareTo(item) == 0));
}
public int size()
{
int count = 0;
current = first;
pre = null;
while (current != null)
{
pre = current;
current = current.getNext();
count++;
}
return count;

}
public void add(Comparable c)
{

Node temp = new Node(c);
if (pre == null)
{
first = temp;
}
else
{
pre.setNext(temp);
}
temp.setNext(current);
current = temp;
}
public void remove(Comparable c)
{
if (pre == null)
{
first = first.getNext();
}
else
{
current = current.getNext();
if (pre == null)
{
first = current;
}
else
{
pre.setNext(current);
}

}

}
public void clear()
{
first = null;
}
public void print()
{
Node current = first;
while (current != null)
{
System.out.println(current.getData());
current = current.getNext();
}
}
}

卡类:

public class Card implements Comparable<Card>
{
private int rank;
private int suit;
public Card(int suit, int rank)
{
this.rank = rank;
this.suit = suit;
}
public int getRank()
{
return rank;
}
public int getSuit()
{
return suit;
}
public String toString()
{
switch(suit)
{
case 1:
switch(rank)
{
case 11: return "Jack of Hearts";
case 12: return "Queen of Hearts";
case 13: return "King of Hearts";
case 14: return "Ace of Hearts";
default: return rank + " of Hearts";
}

case 2:
switch(rank)
{
case 11: return "Jack of Diamonds";
case 12: return "Queen of Diamonds";
case 13: return "King of Diamonds";
case 14: return "Ace of Diamonds";
default: return rank + " of Diamonds";
}
case 3:
switch(rank)
{
case 11: return "Jack of Clubs";
case 12: return "Queen of Clubs";
case 13: return "King of Clubs";
case 14: return "Ace of Clubs";
default: return rank + " of Clubs";
}
case 4:
switch(rank)
{
case 11: return "Jack of Spades";
case 12: return "Queen of Spades";
case 13: return "King of Spades";
case 14: return "Ace of Spades";
default: return rank + " of Spades";
}
}
return null;
}
public int compareTo(Card a)
{
if (this.rank < a.rank)
{
return -1;
}
if (this.rank > a.rank)
{
return 1;
}
if (this.rank == a.rank)
{
if (this.suit < a.suit)
{   
return -1;
}
if (this.suit > a.suit)
{
return 1;
}
}

return 0;
}
}

CardDeck类 - 卡的链接列表:

import java.util.Random;

public class CardDeck
{
private LinkedList cards;
private int numCards;
public void Deck()
{
for (int a = 1; a <= 4; a++)
{
for (int b = 1; b <= 14; b++)
{
cards.add(new Card(a,B)/>);
}
}
}

public void drawFromDeck()
{
Random rand = new Random();
int index = rand.nextInt(cards.size());
cards.remove(index);
numCards--;
}
public int getTotalCard()
{
return cards.size();
}
}

主要课程:

public class Main
{
public static void main(String[] args)
{
LinkedList myList = new LinkedList();
CardDeck myCards = new CardDeck();
myCards.Deck();
myList.print();
}

2 个答案:

答案 0 :(得分:0)

在您当前的代码中,您正在打印的myList永远不会被调用的构造函数修改。如果要打印出myCard的内容,则需要将print语句放在该类的方法中,并调用该方法来打印卡组内容,或者为cards创建一个getter。并在课堂外打印。

答案 1 :(得分:0)

程序不正确。 cards.add(新卡(a,B)/&gt;);这行应该抛出异常 你没有初始化卡片。 它为空。