为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我不能从我的多维数组中打印字符串?

为什么我不能从我的多维数组中打印字符串?

拉风的咖菲猫 2023-06-08 19:12:23
我在其他帖子中读到,System.out.println(finalPressedKey); 你应该写而不是只写System.out.println(Arrays.toString((finalPressedKey));,否则它只会返回保存字符串的位置(据我所知)。public static String PressedKey[] = new String[2000];public static String[][] finalPressedKey = {{ "", "", "", "", "", "", "", "", "", "", "", "" }}; // 12public static String FPK3;public static void upcounter(KeyEvent e) {    for (int x = 0; x < PressedKey.length; x++) {        if (PressedKey[x] != null && PressedKey[x + counter] != null) {        //FPK counter is supposed to be a line, and counter is where the words are supposed to be saved        finalPressedKey[FPKcounter][counter] =        finalPressedKey[FPKcounter] + PressedKey[x + counter];            System.out.println(Arrays.toString(finalPressedKey));        }    }每当我按下一个按钮时,它应该保存在我的PressedKey数组中,并且 finalPressedKey 应该包含它自己,并且PressedKey(而且,应该只打印数组的最后一个元素),但它只是打印[[Ljava.lang.String;@76f42c4b]我也尝试过使用Arrays.deepToString();,但它给了我与使用相同的输出Arrays.toString();感谢您的帮助!
查看完整描述

4 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

AString[][]不是二维数组。它是一个数组String[]。区别很微妙但很重要。

该方法Arrays.toString()接受一个数组,遍历其元素,调用toString()所有元素,并添加前缀、后缀和分隔符。因为你给它一个String[][](一个数组String[]),它会做以下事情:

  • 遍历元素(每个元素都是一个String[]

  • 调用每个元素 - 给出数组的toString()默认值 - 即它的内存地址(不是真的但是为了这个目的它并不重要)toString()

  • 连接

幸运的是,有一种更简单的方法 - 只需使用Arrays.deepToString(). 这表现得如您所料。


查看完整回答
反对 回复 2023-06-08
?
冉冉说

TA贡献1877条经验 获得超1个赞

我不理解整个代码,但以下语句非常可疑:

finalPressedKey[FPKcounter][counter] =
finalPressedKey[FPKcounter] + PressedKey[x + counter];

因为它将数组 ( finalPressedKey[...]) 添加到字符串 ( PressedKey[...]),这将导致出现奇怪的文本 - 数组的标准文本表示形式(由 返回toString)。(从数学的角度来看,在分配之前有 2 个索引 2D_ 并且同一矩阵在右侧(1D)只有一个索引很奇怪)

我不确定,因为我们看不到是什么counter,但我相信你想要这样的东西:

finalPressedKey[FPKcounter][counter] =
finalPressedKey[FPKcounter][counter] + PressedKey[x + counter];

也就是说,[counter]第二行有一个额外的。

这也可以写成

finalPressedKey[FPKcounter][counter] += PressedKey[x + counter];


查看完整回答
反对 回复 2023-06-08
?
慕沐林林

TA贡献2016条经验 获得超9个赞

如果您只想存储字符串行,普通的 String[] 对您有好处

finalPressedKey[FPKcounter] += PressedKey[x + counter];

尽管我不建议这样做,但无论您想要完成什么,因为每次按下一个键时都会创建一个新的 String 对象。

也许以不同的方式提出问题并告诉我们您要做什么。我想字符串数组可能不是要走的路。


查看完整回答
反对 回复 2023-06-08
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

您必须使用打印数组的元素


for(int i = 0; i<finalPressedKey[0].length; i++){

   for(int j=0; j<finalPressedKey[1].length; j++){

      System.out.println(finalPressedKey[i][j]);

   } 

}


如果我理解正确的话。


查看完整回答
反对 回复 2023-06-08
  • 4 回答
  • 0 关注
  • 150 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信