1

私はプログラミングに慣れていないので、恐ろしく見えたら許してください。私は自分が何をしているのかよくわかりません。

コードをコンパイルすると、次のエラーが発生します。

error: constructor Card in class Card cannot be applied to given types;
required: no arguments
found: String, String, int
reason: actual and formal arguments differ in length

これは私のコードです:

public void testConvenienceConstructor() {
    System.out.println("Card...");
    Card instance = new Card("4", DIAMONDS, 4);
    assertEquals("4", instance.getName());
    assertEquals(DIAMONDS, instance.getSuit());
    assertEquals(4, instance.getValue());

これが私のカードクラスコードです:

package model;

public class Card implements CribbageConstants {
//-----fields-----
private String name;     //the name of the card
private String suit;     //the suit of the card
private int value;       //the value of the card

//---------- Constructors ---------
/**
 * No argument constructor - set default values for card
 */
public Card() {

        name = "ACE";
        suit = "CLUBS";
        value = 1;
    }
//-------------- Utility methods --------------

    /**
     * Provide a text representation of a card.
     *
 * @return The banana's name, suit, and value
 */
public String getName() {
    return name;
}

public String getSuit() {
    return suit;
}

public int getValue() {
    return value;
}

//------mutator-----
public void setName(String name) {
    this.name = name;
}

public void setSuit(String suit) {
    this.suit = suit;
}

public void setValue(int value) {
    this.value = value;
}
//-----------utility methods------------
}
4

3 に答える 3

1

では、 a 、a 、およびを受け取るnew Card("4", DIAMONDS, 4);コンストラクターを呼び出しています。しかし、そのようなコンストラクターは存在しません! そのため、コンパイラは動揺しています。CardStringStringint

これをコードに追加します。

public Card(String name, String suit, int value) {
    this.name = name;
    this.suit = suit ;
    this.value = value;
}
于 2013-09-29T06:12:48.017 に答える
1

ここでカードを作成しようとしています:

Card instance = new Card("4", DIAMONDS, 4);

存在しないコンストラクタを使用しています。

クラスCardでは、指定された型を受け入れるコンストラクターを作成する必要があります。

public Card(String nme, String suit, int val) {

        name = nme;
        suit = suit;
        value = val;
}

また、私が信じている文字列として送信する必要がありますDIAMONDS(二重引用符で囲まれています):

Card instance = new Card("4", "DIAMONDS", 4);

別のコンストラクターを追加したくない場合は、開始コードを変更できます。

Card instance = new Card();
instance.setName("4");
instance.setSuit("DIAMONDS");
instance.setValue(4);
于 2013-09-29T06:12:59.167 に答える
1

これをクラスに追加します。

public Card(String name, String suit, int value)
{
    this.name = name;
    this.suit = suit;
    this.value = value;
}
于 2013-09-29T06:14:18.070 に答える