Java错误:找不到符号?

phi*_*ill 0 java string

我有以下代码片段,其中一些字符串在if块中初始化:

String serialmask = request.getParameter( "serialmask"); 
String serialincrement = request.getParameter( "serialincrement");
if (serialmask == "1") { 
  String tserialmask = "aaa########"; 
} 
else { 
  String tserialmask = "";
}
if (serialincrement == "1") {  
  String tserialincrement = "aaa^^^^^^^^";
}
else { 
  String tserialincrement = ""; 
}
out.println(
  itemimport( 
    partnumber, 
    itemcost, 
    itemlistprice, 
    itemdescription, 
    PurchProdLineKey, 
    UnitMeasKey, 
    itemclasskey, 
    trackmethod, 
    tserialmask, 
    tserialincrement
  )
);
Run Code Online (Sandbox Code Playgroud)

我得到的错误"cannot find symbol" symbol : variable tserialmaskout.println(itemimport(....tserialmask,tserialincrement));声明中.

我尝试在if块之外声明变量,这似乎会带来更多的错误,说它已经被声明了.

Jon*_*eet 5

您需要先声明变量,然后再分配它.这是版本tserialincrement(同样适用于tserialmask)

String tserialincrement;
if (serialincrement == "1")
{
   tserialincrement = "aaa^^^^^^^^";
}
else
{ 
   tserialincrement = "";
}
Run Code Online (Sandbox Code Playgroud)

但是,这有两个问题:

  • 你在字符串上使用==,这在几乎所有情况下都是个坏主意; 使用equals
  • 您可以使用条件运算符在一个语句(每个变量)中执行此操作:

    String tserialmask = "1".equals(serialmask) ? "aaa########" : "";
    String tserialincrement = "1".equals(serialincrement) ? "aaa^^^^^^^^" : "";
    
    Run Code Online (Sandbox Code Playgroud)

另外,我建议使用更好的变量名,使用Pascal大小写(例如serialMask)和比"t"更有用的东西作为前缀.(那是什么意思?)