messageFormt() 多维数组出错

messageFormt() Error with multidimensional array

您好,我正在尝试 运行 我的程序,但我得到了一个非常奇怪的输出。该程序在它是单个数组时有效,但当我将其设为多维时,它会出错。请帮忙

public static void main(String[] args) throws IOException {

            MessageFormat messageFormat = new MessageFormat("insert into {0} values ( ''{1}'', ''{2}'', ''{3}'', ''{4}'' )");
            Object[][] data = { {"000", "111", "222","333","444","555"},
                               {"000", "123", "234","345","456","567"} }; 

            System.out.println(messageFormat.format(data));
}

我的输出是:

run:
insert into [Ljava.lang.Object;@2a134eca values ( '[Ljava.lang.Object;@52934c3b', '{2}', '{3}', {4} )
BUILD SUCCESSFUL (total time: 0 seconds)

当你传递 data 时,你传递的是一个对象数组(也恰好是对象数组)。所以第一个是 data[0],第二个是 data[1],两者看起来都是 Object[] 大小 6.

解决这个问题:

 messageFormat.format(data[0]);

请注意,您可能将其用于 SQL 插入语句。我强烈建议您改用 PreparedStatement,因为这种方法很容易出错,如果您不小心,会导致 SQL 注入攻击!

MessageFormat 提供的格式非常适合打印一维数组。然而它不能直接打印二维数组。

您需要遍历二维数组 data:

for(Object[] array : data) {
    System.out.println(messageFormat.format(array));
}