Java 为什么我只会回来?
当我运行这个程序时,我得到的一切都是空的…我不能再盯着这个看了。我就是找不到错误。。。谁能给我一个提示。。。我不知道还有什么其他相关细节Java 为什么我只会回来?,java,Java,当我运行这个程序时,我得到的一切都是空的…我不能再盯着这个看了。我就是找不到错误。。。谁能给我一个提示。。。我不知道还有什么其他相关细节 public class Deckofcards { public static final int NCARDS = 52; private card[] deckOfCards; // Contains all 52 cards private int currentCard;
public class Deckofcards
{
public static final int NCARDS = 52;
private card[] deckOfCards; // Contains all 52 cards
private int currentCard; // deal THIS card in deck
public Deckofcards( ) // Constructor
{
deckOfCards = new card[ NCARDS ];
int i = 0;
for ( int suit = card.SPADE; suit <= card.DIAMOND; suit++ )
for ( int rank = 1; rank <= 13; rank++ )
deckOfCards[i++] = new card(suit, rank);
private byte cardSuit;
private byte cardRank;
public card( int suit, int rank )
{
if ( rank == 1 )
cardRank = 14; // Give Ace the rank 14
else
cardRank = (byte) rank;
cardSuit = (byte) suit;
}
public boolean equals( card x )
{
if ( this.cardSuit == x.cardSuit &&
this.cardRank == x.cardRank )
return ( true );
else
return ( false );
}
public String toString()
{
return ( Rank[ cardRank ] + Suit[ cardSuit ] );
}
}
public class Dealer
{
public static void main(String[] args)
{
Deckofcards a;
a = new Deckofcards();
System.out.println(a); // What a new deck look like
System.out.println("Shuffle cards....");
a.shuffle(1000); // Shuffle deck of card "a"
System.out.println(a); // Deck after shuffling
card b;
b = a.deal();
System.out.println("Deal a card: " + b);
b = a.deal();
System.out.println("Deal a card: " + b);
b = a.deal();
System.out.println("Deal a card: " + b);
b = a.deal();
System.out.println("Deal a card: " + b);
b = a.deal();
System.out.println("Deal a card: " + b);
}
}
currentCard = 0;
}
//shuffle(n): shuffle the deck
public void shuffle(int n)
{
int i, j, k;
for ( k = 0; k < n; k++ )
{
i = (int) ( NCARDS * Math.random() ); // Pick 2 random cards
j = (int) ( NCARDS * Math.random() ); // in the deck
//swap these randomly picked cards
card tmp = deckOfCards[i];
deckOfCards[i] = deckOfCards[j];
deckOfCards[j] = tmp;;
}
currentCard = 0; // Reset current card to deal
}
//deal(): deal deckOfCards[currentCard] out
public card deal()
{
if ( currentCard < NCARDS )
{
return ( deckOfCards[ currentCard++ ] );
}
else
{
System.out.println("Out of cards error");
return ( null ); // Error;
}
}
public String toString()
{
String s = "";
int k;
k = 0;
for ( int i = 0; i < 4; i++ )
{
for ( int j = 1; j <= 13; j++ )
s += (deckOfCards[k++] + " ");
s += "\n";
}
return ( s );
}
}
public class card
{
public static final int SPADE = 4;
public static final int HEART = 3;
public static final int CLUB = 2;
public static final int DIAMOND = 1;
private static final String[] Suit = { "*", "d", "c", "h", "s"};
private static final String[] Rank = { "*", "1", "2", "3", "4",
"5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
private byte cardSuit;
private byte cardRank;
public card( int suit, int rank )
{
if ( rank == 1 )
cardRank = 14; // Give Ace the rank 14
else
cardRank = (byte) rank;
cardSuit = (byte) suit;
}
public boolean equals( card x )
{
if ( this.cardSuit == x.cardSuit &&
this.cardRank == x.cardRank )
return ( true );
else
return ( false );
}
public String toString()
{
return ( Rank[ cardRank ] + Suit[ cardSuit ] );
}
}
public class Dealer
{
public static void main(String[] args)
{
Deckofcards a;
a = new Deckofcards();
System.out.println(a); // What a new deck look like
System.out.println("Shuffle cards....");
a.shuffle(1000); // Shuffle deck of card "a"
System.out.println(a); // Deck after shuffling
card b;
b = a.deal();
System.out.println("Deal a card: " + b);
b = a.deal();
System.out.println("Deal a card: " + b);
b = a.deal();
System.out.println("Deal a card: " + b);
b = a.deal();
System.out.println("Deal a card: " + b);
b = a.deal();
System.out.println("Deal a card: " + b);
}
}
空空空空空空空空空空空空空空空
空空空空空空空空空空空空空空空
空空空空空空空空空空空空空空空
洗牌。。。。
空空空空空空空空空空空空空空空
空空空空空空空空空空空空空空空
空空空空空空空空空空空空空空空
空空空空空空空空空空空空空空空
发一张卡:空
发一张卡:空
发一张卡:空
发一张卡:空
发卡:空发现我的错误
在我的cards.java文件中…菱形和黑桃位于错误的位置…下面是更正的部分
for ( int suit = card.DIAMOND; suit <= card.SPADE; suit++ )
for ( int rank = 1; rank <= 13; rank++ )
deckOfCards[i++] = new card(suit, rank);
for(int suit=card.DIAMOND;suit)所以您希望我们通读200行代码,在某处找到一个null
。请您的问题包括哪些方法是返回null,请修复您的代码缩进。它们都返回null。我将发布我的结果。我建议您使用Eclipse或IntelliJ之类的调试器逐步检查代码,您可以逐行查看哪些代码返回null,以及在您的执行代码路径中我猜return(秩[cardRank]+Suit[cardSuit]);
需要返回(秩[this.cardRank]+Suit[this.cardSuit]);
在类卡中,方法为字符串。
for ( int suit = card.DIAMOND; suit <= card.SPADE; suit++ )
for ( int rank = 1; rank <= 13; rank++ )
deckOfCards[i++] = new card(suit, rank);