このプログラムの目的は、リンクされたリストを使ってカードのデッキをデザインすることです。 私のコードは実行時に何も印刷しません。 リンクリストを使ってカードのデッキをデザインする
ノードクラス以下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();
}
あなたのコードにはインデントがありませんので、すべて左揃えにし、読み込み、理解、デバッグすることはほとんど不可能です。投稿コードを適切なインデント(通常はブロックあたり4つのスペース)を与え、同じブロックのすべてのコードが同じインデントレベルにあるようにして、再フォーマットしてください。これに対するあなたの協力は非常に高く評価され、まともで迅速な回答を得る可能性が高まるでしょう。 –
あなたの書式を修正してください –
何もせず目的を果たしていないmain内のLinkedList myList変数を作成しています - なぜですか?目的を持たないコードを作成しないでください。この無駄な変数を取り除き、何も保持しないので、printを呼び出さないでください。代わりにmyCards変数の内容を出力する必要があります。 –