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提供されている形式を使用すると、1 次元配列を印刷するのに最適です。しかし、箱から出してすぐに 2 次元配列を印刷することはできません。

2次元配列を反復処理する必要がありますdata:

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

渡すときdataは、オブジェクトの配列 (たまたまオブジェクトの配列でもあります) を渡しています。つまり、最初のものはdata[0]で、2 つ目はで、どちらもサイズが 6data[1]に見えます。Object[]

これを修正するには:

 messageFormat.format(data[0]);

注意点として、これを SQL 挿入ステートメントに使用しているようです。PreparedStatementあまり注意しないと、この方法はエラーが発生しやすく、SQL インジェクション攻撃につながるため、代わりにa を使用することを強くお勧めします。

于 2015-01-13T14:18:38.770 に答える