2017-06-17 15 views
0

私は問題がありますが、正確に何が原因かわかりません。私は正式に働いたプログラムを持っていましたが、すべてのエントリーを買う余裕はありませんでした。これを修正するためにtry-catchブロックを追加しました。変更前は、try-catchコードのすべてではなく、tryブロック内で見ることができる2行しかありませんでした。 これまでは、すべてが正しいと思う。しかし、私のコードをコンパイルしようとすると、エラーが発生しました:シンボル(variable:workedPer)を見つけることができません ""。私はtryブロックが常に実行されていると思ったので、なぜその変数は定義されていませんか?私は他の同様の質問に目を通しましたが、解決策を見つけることができませんでした。実行されないコードを試してみませんか?

注:これはコードの一部です。私は問題を見やすくするためにこれを書いています。しかし、より多くのコードが必要な場合は、私に知らせてください。

try 
{ 
    String[] workedPer = newPer.split("="); 
    workedPer[1] = workedPer[1].substring(0, workedPer[1].length() -1); 
} 

catch (ArrayIndexOutOfBoundsException ex) 
{ 
    System.out.println("Invalid Entry. Program will stop now..."); 
    System.exit(1); 
} 

for (Material mat : readyContent) 
{ 
    if ((mat.category).equals(workedPer[0])) 
    { 
     checker = true; 
    } 
} 
+0

forループ内でアクセスすることができます。 –

答えて

1

workedPer変数のスコープはtryブロックに制限されているからです。あなたは

String[] workedPer = null; 
try 
{ 
    workedPer = newPer.split("="); 
    workedPer[1] = workedPer[1].substring(0, workedPer[1].length() -1); 
} 

にコードを変更する必要が

だから、それは[MCVE]まともにあなたのコードとあなたの問題を蒸留するための最良の

for (Material mat : readyContent) 
{ 
    if ((mat.category).equals(workedPer[0])) // you are using it here 
    { 
     checker = true; 
    } 
}