2014-02-19 145 views
-1

所以我试图访问我的代码中的数组内容,这是在if语句中初始化和decalred。如果声明中的数组声明和初始化Java

下面的代码

 String Columns[]=new String[records.size()]; 
     if(records.size()==3){ 
      Columns={"Forename","Surname","Salary"}; 
     } 
     else{ 
      Columns={"Forename","Surname"}; 
     } 
     String Query[]=new String[records.size()]; 
     for(int i=0; i<records.size(); i++) 
     { 
      Query[i]="UPDATE table SET "+Columns[i]+"='"+records.get(i)+"' WHERE StaffID="+id; 
     } 

我得到的错误“表达的非法启动”和“不言”。因此,当我尝试在if语句中将其定义为像这样...

 if(records.size()==3){ 
      String Columns[]={"Forename","Surname","Salary"}; 
     } 
     else{ 
      String Columns[]={"Forename","Surname"}; 
     } 
     String Query[]=new String[records.size()]; 
     for(int i=0; i<records.size(); i++) 
     { 
      Query[i]="UPDATE table SET "+Columns[i]+"='"+records.get(i)+"' WHERE StaffID="+id; 
     } 

我得到这个代替:找不到符号列。

关于如何让这段代码编译的任何建议?

所有的反馈表示赞赏。提前致谢。

+1

你'if'声明 – fge

+0

变量有*范围之前就宣布'Columns' *。如果你在一个块中声明它们,它们只存在于该块中。 –

回答

2

搬迁前变量声明:

String[] columns; 
if (records.size()) { 
    // set values 
} else { 
    // set other values 
} 
// do code logic