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

Java从二维String数组取随机输出时打印数组地址值问题解决

问题原因

你看到的[Ljava.lang.String;@3fee733d是Java中String数组对象的默认字符串表示,不是随机生成的异常内容:

  • 前缀[Ljava.lang.String;表示当前打印对象是存放String类型元素的一维数组
  • @后面的十六进制串是这个数组对象的哈希值标识
    你定义的vk是二维String数组,本质是元素为一维String数组的数组。现有代码仅生成了第一维的随机索引,vk[randomNumber]取到的是内层的一维数组对象,直接打印对象时会调用数组默认的toString()方法,该方法没有做内容格式化,就会输出这类地址格式的结果。
修复方案

根据你想要的输出效果二选一即可:

方案1:随机输出单个单词

如果你想从所有单词里随机抽一个输出,需要额外生成内层数组的随机索引,拿到具体的字符串元素再打印:

import java.util.Random;

public class VKSimple {
    public static void main(String[] args) {
        String[][] vk = {{"Hallo", "Hello"},
                        {"Haus", "House"},
                        {"Auto", "Car"}};
        
        Random r = new Random();
        // 随机选单词组
        int randomRow = r.nextInt(vk.length);
        // 随机选组内的单词
        int randomCol = r.nextInt(vk[randomRow].length);
        // 打印具体字符串元素
        System.out.println(vk[randomRow][randomCol]);
    }
}

运行后会随机输出Hallo、Hello、Haus、House、Auto、Car中的任意一个。

方案2:随机输出一整组单词对

如果你想随机抽一整组德英对照单词输出,用Arrays.toString()方法把内层数组转为可读格式字符串再打印即可:

import java.util.Arrays;
import java.util.Random;

public class VKSimple {
    public static void main(String[] args) {
        String[][] vk = {{"Hallo", "Hello"},
                        {"Haus", "House"},
                        {"Auto", "Car"}};
        
        Random r = new Random();
        int randomRow = r.nextInt(vk.length);
        // 把数组转为可读字符串后打印
        System.out.println(Arrays.toString(vk[randomRow]));
    }
}

运行后会随机输出[Hallo, Hello]、[Haus, House]、[Auto, Car]这类格式化后的结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:16:01