我有以下代码段,其中一些字符串在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));
。
我尝试在if
块之外声明变量,这似乎会带来更多错误,说它已经被声明了。
答案 0 :(得分:5)
您需要先声明变量,然后再分配它。这是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”作为前缀。 (这是什么意思?)
答案 1 :(得分:3)
您需要在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));
答案 2 :(得分:0)
您在if else语句中声明String变量,然后尝试在语句之外访问它们。您需要在if语句之前声明变量,然后仅在if / else语句中指定它们。
答案 3 :(得分:0)
您需要在if分支和之外声明变量tserialmask和tserialincrement,而不是尝试在内部重新声明它们,如下所示:
String tserialmask;
if (serialmask == "1") {
tserialmask = "aaa########";
} else {
tserialmask = "";
}