-1

NetBeans IDE を使用してプログラムを開発していたところ、次の行の前にエラーが表示されました。

不正な式の開始とその下の「;」期待される

私は Java を初めて使用し、配列に値を代入していたときにこのエラーを修正できません。

以下は、エラーが発生したコードの一部です。


String[] colname;
   int j=0;
   while(rs.next()){
     for(int i=0;i<cols;i++){
       colname={dtm.getColumnName(i)};       //**<-- This is where the error occured**
                }
                    colName=colname;   //colName is also an array of String datatype.
                    Object[] value = {rs.getObject(colName[j])};
                    dtm.addRow(value);
                    j++;
                }

すべて離れてライン

colname={dtm.getColumnName(i)};

エラーは発生しません。しかし、エラーは上記の行でのみ発生します。

私はそれを修正できないことに気づきました。誰かがそれを修正するのを手伝ってくれますか?

4

2 に答える 2

4

単純に変数に代入する場合は、その形式の配列作成を使用できません。変数宣言の一部としてのみ有効です。必要なもの:

colname = new String[] { dtm.getColumnName(i) };

ただし、これが実際に望んでいることとは思えません...ループの最後の反復以外はすべて無意味です。

おそらく、次のようなものが必要です。

String[] colNames = new String[cols];
for (int i = 0; i < cols; i++) {
    colNames[i] = dtm.getColumnName(i);
}

また、次のようなコードは避けることを強くお勧めします。

 colName=colname;

大文字と小文字だけが異なる 2 つの変数を持つことは、非常に悪い考えです。

于 2013-01-31T14:53:26.873 に答える
4

配列を初期化するには、次の 2 つの方法があります。

String[] colname= {dtm.getColumnName(i)};

また

colname= new String[] {dtm.getColumnName(i)};

しかし、それらを混在させることはできません。あなたの場合、宣言する行にまだ入力する情報がないため、後者を使用します。

ただし、ループごとに新しい配列を再割り当てし続けるため、これはおそらく希望どおりにならないことに注意してください。代わりに ArrayList を使用すると、作業が楽になります。

List<String> colName = new ArrayList<String> ();

//in your loop
colName.add(dtm.getColumnName(i));

配列の詳細については、このチュートリアルを参照してください。

于 2013-01-31T14:53:52.363 に答える