2009-05-29 125 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 = ""; 
}