0

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

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)
4

2 回答 2

1

MessageFormat提供的格式非常适合打印一维数组。然而,它不能开箱即用地打印二维数组。

您需要遍历您的二维数组data

for(Object[] array : data) {
    System.out.println(messageFormat.format(array));
}
于 2015-01-13T14:19:15.727 回答
0

当你传入data时,你传入了一个对象数组(也恰好是对象数组)。所以第一个是data[0],第二个是data[1],两者的大小似乎都是Object[]6。

要解决这个问题:

 messageFormat.format(data[0]);

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

于 2015-01-13T14:18:38.770 回答