JAVA - 错误类型不兼容:String cannot be converted to String\[ \]

新手上路,请多包涵

我正在从事 Java 项目 - 扑克牌。

而且,在这个 Card.java 类中,我声明并初始化了变量和数组列表。我遇到过这个错误。这些错误在每个 getter 和 setter 方法下。

 error: incompatible types: String cannot be converted to String[]
error: incompatible types: int[] cannot be converted to int

public class Card {

   // private String suit;
    //private String name;
    //private int value;

private String[] suit = {"spades","hearts","clubs","diamonds"};
private String[] name = {"Ace","Jack","Queen","King"};
private int[] value = {1,2,3,4,5,6,7,8,9,10,11,12,13};

public Card(String s, String n, int v)
{
    suit = s;
    name = n;
    value = v;
}

public String getSuit()
{
    return suit;
}

public String getName()
{
    return name;
}

public int getValue()
{
    return value;
}

public String toString()
{
    return "<"+suit+" "+name+">";
}

这是全班。

希望知道的朋友帮帮我,谢谢! (:

如果您不明白我要表达的意思,请告诉我,尽我所能解释

原文由 Preeyah 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2k
2 个回答

我敢打赌,您为这些初始字段集生成了 getter 和 setter 以及构造函数。

 // private String suit;
// private String name;
// private int value;

但是在将它们更改为之后

private String[] suit = { "spades", "hearts", "clubs", "diamonds" };
private String[] name = { "Ace", "Jack", "Queen", "King" };
private int[] value = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 };

你忘了相应地修改它们。您需要将 getter 和 setter 以及构造函数更改为类似这样的内容。 toString() 方法也是如此。

 public class Card {

    private String[] suit = { "spades", "hearts", "clubs", "diamonds" };
    private String[] name = { "Ace", "Jack", "Queen", "King" };
    private int[] value = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 };

    public Card(String[] suit, String[] name, int[] value) {
        super();
        this.suit = suit;
        this.name = name;
        this.value = value;
    }

    public String[] getSuit() {
        return suit;
    }

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

    public String[] getName() {
        return name;
    }

    public void setName(String[] name) {
        this.name = name;
    }

    public int[] getValue() {
        return value;
    }

    public void setValue(int[] value) {
        this.value = value;
    }

    @Override
    public String toString() {
        return "Card [suit=" + Arrays.toString(suit) + ", name="
            + Arrays.toString(name) + ", value=" + Arrays.toString(value)
            + "]";
    }
}

如果您碰巧更改了类中的字段,请始终记住生成新的 getter、setter、构造函数 toString() 方法。

原文由 Rahul 发布,翻译遵循 CC BY-SA 3.0 许可协议

您的变量 suitnamevalue 是数组:

 private String[] suit = {"spades","hearts","clubs","diamonds"};
private String[] name = {"Ace","Jack","Queen","King"};
private int[] value = {1,2,3,4,5,6,7,8,9,10,11,12,13};

In the Constructor you are passing String s , String n, int v as a single data type and assigning it to an array suit , name and value .

 public Card(String s, String n, int v)
{
    suit = s;
    name = n;
    value = v;
}

让它们 String[] s, String[] n , int[] v 你的错误将消失:

 public Card(String[] s, String[] n, int[] v)
{
    suit = s;
    name = n;
    value = v;
}

在下面的代码中,您得到的是一个数组而不是单个字符串。使他们的返回类型 String[]

 public String getSuit()
{
    return suit;
}

public String getName()
{
    return name;
}

原文由 Zar E Ahmer 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题