[英]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.