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

我在其他帖子中读到,System.out.println(finalPressedKey); 你应该写而不是只写System.out.println(Arrays.toString((finalPressedKey));,否则它只会返回保存字符串的位置(据我所知)。


public static String PressedKey[] = new String[2000];


public static String[][] finalPressedKey = {{ "", "", "", "", "", "", "", "", "", "", "", "" }}; // 12


public 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();


感谢您的帮助!


拉风的咖菲猫
浏览 151回答 4
4回答

HUWWW

AString[][]不是二维数组。它是一个数组String[]。区别很微妙但很重要。该方法Arrays.toString()接受一个数组,遍历其元素,调用toString()所有元素,并添加前缀、后缀和分隔符。因为你给它一个String[][](一个数组String[]),它会做以下事情:遍历元素(每个元素都是一个String[])调用每个元素 - 给出数组的toString()默认值 - 即它的内存地址(不是真的但是为了这个目的它并不重要)toString()连接幸运的是,有一种更简单的方法 - 只需使用Arrays.deepToString().&nbsp;这表现得如您所料。

冉冉说

我不理解整个代码,但以下语句非常可疑:finalPressedKey[FPKcounter][counter]&nbsp;= finalPressedKey[FPKcounter]&nbsp;+&nbsp;PressedKey[x&nbsp;+&nbsp;counter];因为它将数组 (&nbsp;finalPressedKey[...]) 添加到字符串 (&nbsp;PressedKey[...]),这将导致出现奇怪的文本 - 数组的标准文本表示形式(由 返回toString)。(从数学的角度来看,在分配之前有 2 个索引 2D_ 并且同一矩阵在右侧(1D)只有一个索引很奇怪)我不确定,因为我们看不到是什么counter,但我相信你想要这样的东西:finalPressedKey[FPKcounter][counter]&nbsp;= finalPressedKey[FPKcounter][counter]&nbsp;+&nbsp;PressedKey[x&nbsp;+&nbsp;counter];也就是说,[counter]第二行有一个额外的。这也可以写成finalPressedKey[FPKcounter][counter]&nbsp;+=&nbsp;PressedKey[x&nbsp;+&nbsp;counter];

慕沐林林

如果您只想存储字符串行,普通的 String[] 对您有好处finalPressedKey[FPKcounter]&nbsp;+=&nbsp;PressedKey[x&nbsp;+&nbsp;counter];尽管我不建议这样做,但无论您想要完成什么,因为每次按下一个键时都会创建一个新的 String 对象。也许以不同的方式提出问题并告诉我们您要做什么。我想字符串数组可能不是要走的路。

蝴蝶不菲

您必须使用打印数组的元素for(int i = 0; i<finalPressedKey[0].length; i++){&nbsp; &nbsp;for(int j=0; j<finalPressedKey[1].length; j++){&nbsp; &nbsp; &nbsp; System.out.println(finalPressedKey[i][j]);&nbsp; &nbsp;}&nbsp;}如果我理解正确的话。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java