2009-05-29 23 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

正しくフォーマットされたコードを教えてください。それは判読不能です。 –

答えて

5

まず変数を宣言してから、それを割り当てます。

  • あなたが悪いです、文字列、上で==を使用している:ここでtserialincrementのバージョンはしかし、これで間違って二つのものがあります(同じtserialmaskについても同様です)

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

    ですほとんどすべての状況でアイデア。使用equals

  • あなたは条件演算子で(変数ごとに)1つのステートメントでそれを行うことができます

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

はまた、私はパスカルケースを使用して、よりよい変数名をお勧めしたい(例えばserialMask)プレフィックスとして単に "t"より有用なものがあります。 (それはどういう意味ですか?)

0

文字列変数をif elseステートメント内で宣言してから、ステートメントの外側にアクセスしようとしています。 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 = ""; 
} 
関連する問題