Java“非法启动表达式”错误...........如何修复此错误?

时间:2013-01-31 14:52:02

标签: java expression

我正在使用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)};

不会出现任何错误。但错误只发生在上面一行。

我发现自己无法修复它。有人可以帮我解决吗?

2 个答案:

答案 0 :(得分: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;

有两个仅在大小写不同的变量是真的坏主意。

答案 1 :(得分: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));

您可以在this tutorial中阅读有关数组的更多信息。