Java 生成对象时,无法将字符串转换为字符串[]

Java 生成对象时,无法将字符串转换为字符串[],java,Java,我已经浏览了多个线程,但仍然无法理解我做错了什么。真诚的帮助是感激的 在我的代码中,我试图创建一个卡片组,并初始化数组中每个插槽的值,52个插槽。但是,当尝试这样做时,我不断得到错误字符串无法转换为字符串[] 我做错了什么 public class Card { static String[] rank = {"2","3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"}; static String[] suit = {

我已经浏览了多个线程,但仍然无法理解我做错了什么。真诚的帮助是感激的

在我的代码中,我试图创建一个卡片组,并初始化数组中每个插槽的值,52个插槽。但是,当尝试这样做时,我不断得到错误字符串无法转换为字符串[]

我做错了什么

public class Card {
static String[] rank = {"2","3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
    static String[] suit = {"Spades","Hearts", "Clubs", "Diamonds"};
    static Card[] deck = new Card[52];

    public Card(String[] rank, String[] suit)
    {
        this.rank = rank;
        this.suit = suit;
    }

  public static void main(String[] args) {
        // TODO code application logic here


    for(int x = 0; x<deck.length; x++)
    {
        Card cards = new Card(rank[x%13], suit[x/13]);

    }
公共类卡{
静态字符串[]秩={“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”、“J”、“Q”、“K”、“A”};
静态字符串[]套装={“黑桃”、“红心”、“梅花”、“钻石”};
静态卡[]组=新卡[52];
公共卡(字符串[]等级,字符串[]套装)
{
这个.等级=等级;
这套衣服;
}
公共静态void main(字符串[]args){
//此处的TODO代码应用程序逻辑
对于(intx=0;x
新卡(等级[x%13],套装[x/13])
您将
String
对象提供给构造函数,而它需要
String[]
对象

以下可能是您的解决方案

String rank, suit;    
static String[] ranks = {"2","3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
static String[] suits = {"Spades","Hearts", "Clubs", "Diamonds"};
static Card[] deck = new Card[52];

public Card(String rank, String suit)
{
    this.rank = rank;
    this.suit = suit;
}
新卡(等级[x%13],套装[x/13])
您将
String
对象交给构造函数,而构造函数需要
String[]
对象

以下可能是您的解决方案

String rank, suit;    
static String[] ranks = {"2","3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
static String[] suits = {"Spades","Hearts", "Clubs", "Diamonds"};
static Card[] deck = new Card[52];

public Card(String rank, String suit)
{
    this.rank = rank;
    this.suit = suit;
}

您混淆了所有卡牌的可能等级和等级数组以及一张卡牌的具体等级和等级。我的建议是使用复数和单数来清楚区分两者;并更改您的构造函数:

public class Card {
static String[] ranks = {"2","3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
    static String[] suits = {"Spades","Hearts", "Clubs", "Diamonds"};
    static Card[] deck = new Card[52];

    private String rank;
    private String suit;

    public Card(String rank, String suit)
    {
        this.rank = rank; // stores variable 'rank' in attribute 'rank'
        this.suit = suit; // same for 'suit'
    }

您混淆了所有卡牌的可能等级和等级数组以及一张卡牌的具体等级和等级。我的建议是使用复数和单数来清楚区分两者;并更改您的构造函数:

public class Card {
static String[] ranks = {"2","3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
    static String[] suits = {"Spades","Hearts", "Clubs", "Diamonds"};
    static Card[] deck = new Card[52];

    private String rank;
    private String suit;

    public Card(String rank, String suit)
    {
        this.rank = rank; // stores variable 'rank' in attribute 'rank'
        this.suit = suit; // same for 'suit'
    }

您的构造函数使用的是
字符串数组
,而不仅仅是表示特定秩或颜色的
字符串
,而且在构造函数中您试图分配给静态数组

我认为您不希望这样,将静态成员重命名为其他名称(例如
静态字符串ranks\u available[]={…}
等),创建表示特定卡的级别和颜色的非静态成员:

String rank;
String color;

在构造函数中,将参数rank和color作为单独的字符串。

构造函数使用的是
字符串数组
,而不仅仅是
字符串
表示特定的秩或颜色,而且在构造函数中,您试图将其分配给静态数组

我认为您不希望这样,将静态成员重命名为其他名称(例如
静态字符串ranks\u available[]={…}
等),创建表示特定卡的级别和颜色的非静态成员:

String rank;
String color;

在您的构造函数中,将参数rank和color作为单独的字符串。

您的卡片构造函数希望使用两个字符串数组作为参数调用:
string[]rank,string[]suit

执行循环时:

for(int x = 0; x<deck.length; x++)
{
    Card cards = new Card(rank[x%13], suit[x/13]);

}

假设您的卡构造函数需要一个
字符串数组
,编译器会警告您
字符串
不是所需的参数类型。

您的卡构造函数需要调用两个字符串数组作为参数:
字符串[]秩,字符串[]适合

执行循环时:

for(int x = 0; x<deck.length; x++)
{
    Card cards = new Card(rank[x%13], suit[x/13]);

}

假设您的构造函数需要一个
字符串数组
,编译器会警告您
字符串
不是所需的参数类型。

新卡(排名[x%13],适合[x/13])
在构造函数需要
字符串时,您将
字符串
对象提供给构造函数
对象编译器可能还会警告您,您正在使用
this
限定符(
this.rank
this.suit
)访问静态字段。
rank[x%13]
作为字符串数组的元素是
字符串,而卡的
构造函数接受
字符串[]
parameter哦,所以我应该将我的构造函数更改为String right。
新卡(排名[x%13],适合[x/13])
您将
String
对象赋予构造函数,而它期望
String[]
对象编译器可能还会警告您正在使用
this
限定符(
this.rank
this.suit
)访问静态字段。
rank[x%13]
作为字符串数组的元素是一个
String
,而卡的
constructor
接受一个
String[]
参数哦,所以我应该将我的构造函数改为String right。