2016-03-31 5 views
-4

Целью этой программы является создание колоды карт с использованием связанного списка. Мои коды ничего не печатают при запуске. Heres мой код нижеПроектирование колоды карт с использованием связанного списка

узла Класс:

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(); 
} 
+0

Ваш код без каких-либо углублений, что делает все это оправданным и почти невозможным для чтения, понимания и отладки. Пожалуйста, переформатируйте свой опубликованный код, указав правильные отступы, обычно 4 пробела на блок, и убедитесь, что весь код одного и того же блока находится на одном уровне отступов. Ваше сотрудничество в этом будет высоко оценено и, скорее всего, улучшит ваши шансы получить достойный и быстрый ответ. –

+0

исправить форматирование –

+0

Вы создаете переменную myList LinkedList внутри main, которая ничего не делает и не служит цели - почему? Не создавайте код без цели, и поэтому избавляйтесь от этой потраченной впустую переменной и не пытайтесь называть печать на ней, поскольку она ничего не держит. Вместо этого вы должны распечатать содержимое своей переменной myCards. –

ответ

0

В текущем коде, myList, который вы распечатывания, не изменяли в прошлом конструктор вызывается. Если вы хотите распечатать содержимое myCard, вам нужно либо поместить операторы печати в метод в этом классе, и вызвать этот метод для печати содержимого колоды, либо сделать геттер для cards и распечатать его вне класса.

0

Неверная программа. cards.add (новая карта (a, B) />); эта строка должна генерировать исключение, так как вы не инициализировали карты. Его null.