-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;

拥有两个仅在情况下不同的变量是一个非常糟糕的主意。

于 2013-01-31T14:53:26.873 回答
4

您有两种初始化数组的方法:

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 回答