You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何显示数组中所有卡牌?重写toString方法技术求助

解决Java中Card对象输出内存地址的问题

嘿,我完全懂你遇到的麻烦——当你打印自己创建的Card数组元素时,出来的全是Card@wods903je0d这种看不懂的内存地址,对吧?这其实是Java的默认行为在搞鬼,咱们重写toString()方法就能轻松搞定。

为什么会出现这种情况?

所有Java类都默认继承自Object类,而Object类里的toString()方法默认返回的是:

getClass().getName() + '@' + Integer.toHexString(hashCode())

翻译过来就是「类名@哈希码十六进制」,也就是你看到的那些奇怪字符串。咱们要做的就是在Card类里重新定义这个方法,让它返回咱们想要的卡牌信息。

怎么重写toString()方法?

找到你的Card类,在里面添加下面这段代码就行——根据你的Card类实际属性调整内容:

假设你的Card类有suit(花色)和rank(点数)两个核心属性,重写后的方法可以这样写:

public class Card {
    // 你的Card类属性,比如:
    private String suit; // 比如"红桃"、"黑桃"、"方块"
    private String rank; // 比如"A"、"K"、"10"、"2"

    // 你的构造方法、getter/setter方法...

    @Override
    public String toString() {
        // 按你想要的格式返回卡牌信息,这里举个例子
        return rank + " of " + suit;
        // 如果你想更中式一点,也可以写成:suit + rank
    }
}

打印数组的小提醒

如果要打印整个卡牌数组,记得用Arrays.toString()方法,而不是直接打印数组本身——直接打印数组还是会输出数组的内存地址。示例代码:

import java.util.Arrays;

// 假设你已经初始化好了cardArray数组
Card[] cardArray = new Card[52];
// 初始化卡牌的代码...

// 正确打印方式
System.out.println(Arrays.toString(cardArray));

这样一来,输出的就会是像[A of 红桃, K of 黑桃, ...]这种清晰的卡牌信息,再也看不到乱糟糟的内存地址啦!

内容的提问来源于stack exchange,提问作者Waynar Bocangel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:37:14