繁体   English   中英

Java错误:找不到符号?

[英]Java error: can't find symbol?

我有以下代码片段,其中一些字符串在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
  )
);

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

我试图在if块之外声明变量,这似乎带来了更多错误,因为它已经被声明了。

您需要先声明该变量,然后再对其进行分配。 这里的版本tserialincrement (同样是真正的tserialmask

String tserialincrement;
if (serialincrement == "1")
{
   tserialincrement = "aaa^^^^^^^^";
}
else
{ 
   tserialincrement = "";
}

但是,这有两点错误:

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

     String tserialmask = "1".equals(serialmask) ? "aaa########" : ""; String tserialincrement = "1".equals(serialincrement) ? "aaa^^^^^^^^" : ""; 

另外,我建议使用更好的变量名,使用Pascal大小写(例如serialMask ),而不仅仅是用“ t”作为前缀。 (这意味着什么?)

您需要在if / else块之外声明tserialmask和tserialincrement。 否则,当该块结束时,它们将超出范围。

String serialmask = request.getParameter( "serialmask");
String serialincrement = request.getParameter( "serialincrement");
String tserialmask;
String tserialincrement;

if (serialmask == "1")
{  
  tserialmask = "aaa########";
}
else
{ 
  tserialmask = "";
}
if (serialincrement == "1")
{
  tserialincrement = "aaa^^^^^^^^";
}
else
{ 
  tserialincrement = "";
}
out.println(itemimport(partnumber,itemcost,itemlistprice,itemdescription,PurchProdLineKey,UnitMeasKey,itemclasskey,trackmethod,tserialmask,tserialincrement));

您在if else语句中声明String变量,然后尝试在语句之外访问它们。 您需要在if语句之前声明变量,然后仅在if / else语句内分配变量。

您需要在if分支外部声明变量tserialmask和tserialincrement, 不要在内部重新声明它们,如下所示:

String tserialmask;
if (serialmask == "1") {  
    tserialmask = "aaa########"; 
} else { 
    tserialmask = ""; 
} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM