我正在使用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)};
不会出现任何错误。但错误只发生在上面一行。
我发现自己无法修复它。有人可以帮我解决吗?
答案 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中阅读有关数组的更多信息。