2009-05-29 95 views
0

我有下面的代码片段,其中一些字符串在if块初始化:Java错误:找不到符号?

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 
) 
); 

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

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

+0

请给出正确格式的代码。这是不可读的。 – 2009-05-29 13:56:56

回答

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”作为前缀更有用的东西。 (这是什么意思?)

0

您在if语句中声明了字符串变量,然后试图在语句之外访问它们。您需要在if语句之前声明变量,然后仅在if/else语句中指定它们。

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)); 
0

您需要声明变量tserialmask和tserialincrement的,如果树枝不要试图重新声明里面他们,这样外面:

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