だから私はこのようになりますカードのクラスがあります。Returnステートメント
public class Card
{
//instance variables
private String faceValue; //the face value of the card
private String suit; //the suit of the card
String[] ranks = {"Ace", "2", "3", "4", "5", "6","7", "8", "9", "10", "Jack", "Queen", "King"};
String[] suits = {"Clubs", "Diamonds", "Hearts", "Spades"};
/**
* Constructor
*/
public Card(int aValue, int aSuit)
{
faceValue = ranks[aValue];
suit = suits[aSuit];
}
//getters
/**
* Getter for faceValue.
*/
public String getFaceValue()
{
return faceValue;
}
/**
* Getter for suit.
*/
public String getSuit()
{
return suit;
}
//end of getters
//methods
/**
* This method returns a String representation of a Card object.
*
* @param none
* @return String
*/
public String toString()
{
return "A card: " + faceValue + " of " + suit;
}
}
そして、このようになりますデッキクラス:デッキショーで
public class Deck
{
//instance variables
private Card[] deck;
/**
* Constructor for objects of class Deck
*/
public Deck()
{
deck = new Card[52];
int cardCount = 0; //number of cards created so far.
for (int aSuit = 0; aSuit < 4; aSuit++)
{
for (int aValue = 0; aValue < 13; aValue++) {
deck[cardCount] = new Test(aValue, aSuit);
cardCount++;
}
}
}
/**
* String representation.
*/
public String toString()
{
for (int i = 0; i < 52; i++)
{
String v = deck[i].getFaceValue();
String s = deck[i].getSuit();
return "Dealt a card: " + v + " of " + s + ".";
}
}
}
私のtoStringメソッドをエラー "missing return statement"がありません。ループごとにカードの詳細を印刷できるようにしながら、returnステートメントを変更するにはどうすればよいですか?
ループ中に戻ると、リストの最初の要素だけが返されます –
'toString()'のJavaDocを読んでwh (これは、ログステートメントを生成しないためのものです)、 'Card.toString()'は単一のカードを表現しているので問題ありませんが、Deck.toString() tはデッキを表しますが、むしろ何らかのアクション(または少なくとも「カードを扱う...」はそうであることを意味します)。代わりに、おそらく、ログ・ステートメントを直接出力するか、後で使用するための文字列のリストを返すメソッドを提供したいと思うでしょう。 – Thomas
まず、あなたのtoStringは、あなたがそのエラーを持っていなくても、あなたがしたいことをするつもりはありません。文字列を集約し、関数の終わりに1回戻す変数を作成する必要があります。そのままループの最初の繰り返しを実行して戻ります。 – Rob