2017-06-17 70 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; 
    } 
}