繁体   English   中英

转换 ArrayList<object> 串起来<div id="text_translate"><p>嗨,我正在尝试练习 java,我才刚刚开始。 为了练习,我正在尝试构建一个简单的扑克游戏,但遇到了卡片数组列表,我正在尝试将其打印出来,但只有控制台的地址是 output。 自然我尝试使用.toString 方法并创建我自己的toString 方法来尝试检查数组列表是否输入正确。 Bellow 是我的卡片 class 和 Arraylist{Card}Deck。 贝娄是我的代码</p><pre>package poker; import java.util.ArrayList; public class Card { private String _suit; private int _cardNum; public Card(int cardNum, String suit) { _suit = suit; _cardNum = cardNum; } public String toString() { return _suit +_cardNum; } static ArrayList&lt;`enter code here`Card&gt; Deck = new ArrayList&lt;Card&gt;() {{ add(new Card(0,"Hearts")); add(new Card(1,"Hearts")); add(new Card(1,"Hearts")); add(new Card(2,"Hearts")); add(new Card(3,"Hearts")); add(new Card(4,"Hearts")); add(new Card(5,"Hearts")); add(new Card(6,"Hearts")); add(new Card(7,"Hearts")); add(new Card(8,"Hearts")); add(new Card(9,"Hearts")); add(new Card(10,"Hearts")); add(new Card(11,"Hearts")); add(new Card(12,"Hearts")); add(new Card(13,"Hearts")); add(new Card(0,"Spades")); add(new Card(1,"Spades")); add(new Card(2,"Spades")); add(new Card(3,"Spades")); add(new Card(4,"Spades")); add(new Card(5,"Spades")); add(new Card(6,"Spades")); add(new Card(7,"Spades")); add(new Card(8,"Spades")); add(new Card(9,"Spades")); add(new Card(10,"Spades")); add(new Card(11,"Spades")); add(new Card(12,"Spades")); add(new Card(13,"Spades")); add(new Card(0,"Clubs")); add(new Card(1,"Clubs")); add(new Card(2,"Clubs")); add(new Card(3,"Clubs")); add(new Card(4,"Clubs")); add(new Card(5,"Clubs")); add(new Card(6,"Clubs")); add(new Card(7,"Clubs")); add(new Card(8,"Clubs")); add(new Card(9,"Clubs")); add(new Card(10,"Clubs")); add(new Card(11,"Clubs")); add(new Card(12,"Clubs")); add(new Card(13,"Clubs")); add(new Card(0,"Diamonds")); add(new Card(1,"Diamonds")); add(new Card(2,"Diamonds")); add(new Card(3,"Diamonds")); add(new Card(4,"Diamonds")); add(new Card(5,"Diamonds")); add(new Card(6,"Diamonds")); add(new Card(7,"Diamonds")); add(new Card(8,"Diamonds")); add(new Card(9,"Diamonds")); add(new Card(10,"Diamonds")); add(new Card(11,"Diamonds")); add(new Card(12,"Diamonds")); add(new Card(13,"Diamonds")); }}; }</pre><p> 和我的 MainApp</p><pre> package poker; import java.util.Random; import static java.lang.System.out; public class MainApp { public static void main(String[] args) { for(int i = 0;i &lt;Card.Deck.size();i++) { out.println(Card.toString()); } } }</pre><p> 在打印行中是我的问题发生的地方。 如何将 arraylist 从 class 类型转换为用于输出的字符串? 提前致谢!</p></div></object>

[英]Convert ArrayList<Object> to string

嗨,我正在尝试练习 java,我才刚刚开始。 为了练习,我正在尝试构建一个简单的扑克游戏,但遇到了卡片数组列表,我正在尝试将其打印出来,但只有控制台的地址是 output。 自然我尝试使用.toString 方法并创建我自己的toString 方法来尝试检查数组列表是否输入正确。 Bellow 是我的卡片 class 和 Arraylist{Card}Deck。 贝娄是我的代码

package poker;

import java.util.ArrayList;

public class Card {
    private String _suit;
    private int _cardNum;

    public Card(int cardNum, String suit) {
        _suit = suit;
        _cardNum = cardNum;
    }
    public String toString() {
        return _suit +_cardNum;
    }

    static ArrayList<`enter code here`Card> Deck = new ArrayList<Card>() {{
        add(new Card(0,"Hearts"));
        add(new Card(1,"Hearts"));
        add(new Card(1,"Hearts"));
        add(new Card(2,"Hearts"));
        add(new Card(3,"Hearts"));
        add(new Card(4,"Hearts"));
        add(new Card(5,"Hearts"));
        add(new Card(6,"Hearts"));
        add(new Card(7,"Hearts"));
        add(new Card(8,"Hearts"));
        add(new Card(9,"Hearts"));
        add(new Card(10,"Hearts"));
        add(new Card(11,"Hearts"));
        add(new Card(12,"Hearts"));
        add(new Card(13,"Hearts"));
        add(new Card(0,"Spades"));
        add(new Card(1,"Spades"));
        add(new Card(2,"Spades"));
        add(new Card(3,"Spades"));
        add(new Card(4,"Spades"));
        add(new Card(5,"Spades"));
        add(new Card(6,"Spades"));
        add(new Card(7,"Spades"));
        add(new Card(8,"Spades"));
        add(new Card(9,"Spades"));
        add(new Card(10,"Spades"));
        add(new Card(11,"Spades"));
        add(new Card(12,"Spades"));
        add(new Card(13,"Spades"));
        add(new Card(0,"Clubs"));
        add(new Card(1,"Clubs"));
        add(new Card(2,"Clubs"));
        add(new Card(3,"Clubs"));
        add(new Card(4,"Clubs"));
        add(new Card(5,"Clubs"));
        add(new Card(6,"Clubs"));
        add(new Card(7,"Clubs"));
        add(new Card(8,"Clubs"));
        add(new Card(9,"Clubs"));
        add(new Card(10,"Clubs"));
        add(new Card(11,"Clubs"));
        add(new Card(12,"Clubs"));
        add(new Card(13,"Clubs"));
        add(new Card(0,"Diamonds"));
        add(new Card(1,"Diamonds"));
        add(new Card(2,"Diamonds"));
        add(new Card(3,"Diamonds"));
        add(new Card(4,"Diamonds"));
        add(new Card(5,"Diamonds"));
        add(new Card(6,"Diamonds"));
        add(new Card(7,"Diamonds"));
        add(new Card(8,"Diamonds"));
        add(new Card(9,"Diamonds"));
        add(new Card(10,"Diamonds"));
        add(new Card(11,"Diamonds"));
        add(new Card(12,"Diamonds"));
        add(new Card(13,"Diamonds"));
    }};
}

和我的 MainApp

package poker;

import java.util.Random;
import static java.lang.System.out;

public class MainApp {

    public static void main(String[] args) {
        for(int i = 0;i <Card.Deck.size();i++) {
            out.println(Card.toString());

        }
    }
}

在打印行中是我的问题发生的地方。 如何将 arraylist 从 class 类型转换为用于输出的字符串? 提前致谢!

由于toString()不是 static 方法,因此您需要在 class 的实例上调用它。 因此,更改行out.println(Card.toString()); to out.println(Card.Deck.get(i).toString()); 在您的 MainApp 中。

在旁注中,我注意到你每套有 14 张牌,我认为这是无意的。

你可以试试下面它应该打印 ArrayList 的所有字符串内容。

System.out.println(Card.Deck); 

就像是

[Hearts0,Hearts1,Hearts1,Hearts2,Hearts3,Hearts4,Hearts5,Hearts6,Hearts7,Hearts8,Hearts9,Hearts10,Hearts11,Hearts12,Hearts13,Spades0,Spades1,Spades2,Spades3,Spades4,Spades5,Spades6,Spades7,Spades8,Spades9 , 黑桃10, 黑桃11, 黑桃12, 黑桃13, 梅花0, 梅花1, 梅花2, 梅花3, 梅花4, 梅花5, 梅花6, 梅花7, 梅花8, 梅花9, 梅花10, 梅花11, 梅花12, 梅花13, 钻石0, 钻石1, 钻石2, 钻石3, 钻石4, 钻石5, 钻石6 , 钻石7, 钻石8, 钻石9, 钻石10, 钻石11, 钻石12, 钻石13]

您看到的错误是什么?

我看到的最大问题是你的 for 循环没有使用索引来取消引用 Deck 数组的成员:

for(int i = 0;i <Card.Deck.size();i++) {
            out.println(Card.toString());

        }

卡是 class - 不是 object。 您已经创建了卡 class 的一堆 object,但这不是您在该代码中引用的内容。 要引用 object 实例而不是 class,请执行以下操作:您应该将Card.toString()替换为: Card.Deck.get(i).toString() - 但有更好的方法可以做到这一点,见下文。

顺便说一句,您可能应该使用 @Override 属性来实现 toString。 这可能不是绝对必要的,但可以清楚地表明您正在覆盖默认实现:

    @Override
    public String toString() {
        return _suit +_cardNum;
    }

正如我上面提到的,有一种更简单的方法可以打印卡片组中的每张卡片:使用迭代器快捷for代替尝试将 arraylist 视为数组:

    public void printDeck() {
        for(Card card : Card.Deck) {
            out.print(card.toString());
        }
    }

您的 Card.toString() 没有引用 Deck object 中的卡片。 您要做的是从 Deck Object 打印卡片的字符串值。 如果您使用的是 Java 8,您可以使用以下代码:

Card.Deck.forEach(card -> System.out.println(card.toString()));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM