2017-06-17 104 views
0

所以,我有一個問題,但我不知道究竟是什麼導致它。我有一個專門開展工作的計劃,但它無法承受每一個條目。爲了解決這個問題,我添加了一個try - catch塊。在更改之前,我只有在try塊內可以看到的兩行,而不是所有try - catch代碼。直到現在,我認爲一切都應該是正確的。但是當我試圖編譯我的代碼時,我得到一個「」錯誤:無法找到符號(變量: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

最佳提煉你的代碼,你的問題一個體面[MCVE。 –

回答

1

因爲,workedPer變量的範圍僅限於try塊。

您需要更改您的代碼

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

這樣,它可以訪問內部for

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