Java 类型不匹配无法从字符串转换为字符串[]

Java 类型不匹配无法从字符串转换为字符串[],java,Java,当我跑步时: import java.util.Scanner; public class War { public static void main(String[] args) { String[] deckcards=deck(); String[] player1cards=player1Cards(deckcards); } public static String[] deck(){ String[] Car

当我跑步时:

import java.util.Scanner;

public class War {

    public static void main(String[] args) {
        String[] deckcards=deck();
        String[] player1cards=player1Cards(deckcards);
    }
    public static String[] deck(){
        String[] Cards = {"spades1","spades2","spades3", "spades4", "spades5", "spades6", "spades7", "spades8", "spades9", "spades10", "spadesJ", "spadesQ", "spadesK", "spadesA", "clubs1", "clubs2", "clubs3", "clubs4", "clubs5", "clubs6", "clubs7", "clubs8", "clubs9", "clubs10", "clubsJ", "clubsQ", "clubsK", "clubsA", };
        return Cards;
    }
    public static String [] player1Cards(String[] deckcards){
        String[] player1cards = deckcards[0];
        return player1cards;
    }
我有两个错误

一个错误告诉我

Type mismatch cannot convert from String to String[]
另一个错误告诉我在以下位置有一个行断点错误:

String[] player1cards = deckcards[0];
如何解决此问题?

您的问题在于:

String[] player1cards = deckcards[0];
deckcards[0]
是类型为
String
的数组的元素。所以它是一个字符串变量。但您正试图将其分配给
String[]player1cards
,这是Java中不允许的字符串数组。

您的问题在于:

String[] player1cards = deckcards[0];
deckcards[0]
是类型为
String
的数组的元素。所以它是一个字符串变量。但您正试图将其分配给
String[]player1cards
,这是Java中不允许的字符串数组。

这是您的错误:

String[] player1cards = deckcards[0];
如果要将
deckscards
的第一个值复制到
player1cards
的第一个值中,则有一种选择:

String[] player1cards = deckcards;
player1cards[0] = deckcards[0];
根据您的代码,您的意思是整个
字符串[]
等于另一个数组的第一个值。这不可能。如果要使两个数组相等,则:

String [] automobile = {"toyota","zion"};
String[] car = {"nissan"};
automobile = car;
希望这有帮助

这是您的错误:

String[] player1cards = deckcards[0];
如果要将
deckscards
的第一个值复制到
player1cards
的第一个值中,则有一种选择:

String[] player1cards = deckcards;
player1cards[0] = deckcards[0];
根据您的代码,您的意思是整个
字符串[]
等于另一个数组的第一个值。这不可能。如果要使两个数组相等,则:

String [] automobile = {"toyota","zion"};
String[] car = {"nissan"};
automobile = car;

希望这有帮助

字符串[]的元素是一个
字符串,而不是
字符串[]
,但是这样说并不能解决问题

撇开设计和风格问题不谈,我认为你的意图是:

public class War {

    public static void main(String[] args) {
        String[] deckcards=deck();
        // shuffle deck
        List<String> list = new ArrayList<>(Arrays.asList(deckcards));
        Collections.shuffle(list);
        deckcards = list.toArray(new String[]{});
        // deal from deck
        String[] player1cards=player1Cards(deckcards, 0, 5);
    }
    public static String[] deck(){
        String[] Cards = {"spades1","spades2","spades3", "spades4", "spades5", "spades6", "spades7", "spades8", "spades9", "spades10", "spadesJ", "spadesQ", "spadesK", "spadesA", "clubs1", "clubs2", "clubs3", "clubs4", "clubs5", "clubs6", "clubs7", "clubs8", "clubs9", "clubs10", "clubsJ", "clubsQ", "clubsK", "clubsA", };
        return Cards;
    }
    public static String [] player1Cards(String[] deckcards, int from, int quantity){
        String[] player1cards = Arrays.copyOfRange(deckcards, from, from + quantity);
        return player1cards;
    }
}
公共类战争{
公共静态void main(字符串[]args){
字符串[]deckcards=deck();
//洗牌组
列表列表=新的ArrayList(Arrays.asList(deckcards));
集合。洗牌(列表);
deckcards=list.toArray(新字符串[]{});
//从甲板上交易
String[]player1cards=player1cards(deckcards,0,5);
}
公共静态字符串[]deck(){
字符串[]卡片={“spades1”、“spades2”、“spades3”、“spades4”、“spades5”、“spades6”、“spades7”、“spades8”、“spades9”、“spades10”、“spadesJ”、“spadesQ”、“spadesK”、“spadesJ”、“clubs1”、“clubs2”、“clubs3”、“clubs4”、“clubs5”、“clubs6”、“clubs7”、“clubs8”、“clubs9”、“clubs10”、“clubsJ”、“clubsQ”、“clubsK”、“clubsK”、“clubbsa”、};
回程卡;
}
公共静态字符串[]player1Cards(字符串[]deckcards,int-from,int-quantity){
String[]player1cards=Arrays.copyOfRange(deckcards、from、from+数量);
返回球员卡;
}
}

免责声明:未经测试的代码(在iPhone上使用拇指)以及未采取任何措施来解决设计问题,但您将拥有一些有效的功能。

字符串[]
中的元素是一个
字符串,而不是
字符串[]
,但表示这并不能解决您的问题

撇开设计和风格问题不谈,我认为你的意图是:

public class War {

    public static void main(String[] args) {
        String[] deckcards=deck();
        // shuffle deck
        List<String> list = new ArrayList<>(Arrays.asList(deckcards));
        Collections.shuffle(list);
        deckcards = list.toArray(new String[]{});
        // deal from deck
        String[] player1cards=player1Cards(deckcards, 0, 5);
    }
    public static String[] deck(){
        String[] Cards = {"spades1","spades2","spades3", "spades4", "spades5", "spades6", "spades7", "spades8", "spades9", "spades10", "spadesJ", "spadesQ", "spadesK", "spadesA", "clubs1", "clubs2", "clubs3", "clubs4", "clubs5", "clubs6", "clubs7", "clubs8", "clubs9", "clubs10", "clubsJ", "clubsQ", "clubsK", "clubsA", };
        return Cards;
    }
    public static String [] player1Cards(String[] deckcards, int from, int quantity){
        String[] player1cards = Arrays.copyOfRange(deckcards, from, from + quantity);
        return player1cards;
    }
}
公共类战争{
公共静态void main(字符串[]args){
字符串[]deckcards=deck();
//洗牌组
列表列表=新的ArrayList(Arrays.asList(deckcards));
集合。洗牌(列表);
deckcards=list.toArray(新字符串[]{});
//从甲板上交易
String[]player1cards=player1cards(deckcards,0,5);
}
公共静态字符串[]deck(){
字符串[]卡片={“spades1”、“spades2”、“spades3”、“spades4”、“spades5”、“spades6”、“spades7”、“spades8”、“spades9”、“spades10”、“spadesJ”、“spadesQ”、“spadesK”、“spadesJ”、“clubs1”、“clubs2”、“clubs3”、“clubs4”、“clubs5”、“clubs6”、“clubs7”、“clubs8”、“clubs9”、“clubs10”、“clubsJ”、“clubsQ”、“clubsK”、“clubsK”、“clubbsa”、};
回程卡;
}
公共静态字符串[]player1Cards(字符串[]deckcards,int-from,int-quantity){
String[]player1cards=Arrays.copyOfRange(deckcards、from、from+数量);
返回球员卡;
}
}

免责声明:未经测试的代码(在iPhone上翻阅)以及未采取任何措施来修复设计问题,但您将获得一些有效的解决方案。

感谢您的回复。如果您对此有一个解决方案,那就太好了。因为您正试图为一个变量分配一个String类型的值(deckcards[0]),所以该变量必须是String类型的。它看起来是这样的:
stringplayer1cards=deckcards[0]
。你应该查阅一些简单的java教程,比如,它们解释了这一点。你想用这个函数做什么:publicstaticstring[]player1Cards(String[]deckcards){}?谢谢你的回复。如果您对此有一个解决方案,那就太好了。因为您正试图为一个变量分配一个String类型的值(deckcards[0]),所以该变量必须是String类型的。它看起来是这样的:
stringplayer1cards=deckcards[0]
。您应该查阅一些简单的java教程,例如,它们解释了这一点。您打算如何使用函数:publicstaticstring[]player1Cards(String[]deckcards){}?谢谢。这是一个巨大的帮助+谢谢。这是一个巨大的帮助+1.