找不到类或变量

时间:2015-02-13 12:07:16

标签: java

我使用Interpreted Java进行网页抓取,并且不确定我最近在PC上升级到Java(版本8.x而不是版本7.x)与我的问题有什么关系但是我不能再在里面声明一个字符串if语句然后在外面调用它。这曾经工作但现在没有。有问题的代码是这样的:

if (tmp.indexOf("<b>") >= 0) {
    String[] stockSPLIT = tmp.split("<b>"); 
}

然后再使用我使用的代码:

if (stockSPLIT.length > 2)

我已经想通过使用页面顶部的以下代码来修复它,但是想知道是否有人可以指出我为什么这样做的正确方向?

String[] stockSPLIT = {"",""};

2 个答案:

答案 0 :(得分:1)

你并没有真正修复它,变量是known only in the scope it was defined in - 两个stockSPLIT根本不相关,每个都引用一个不同的变量。

if(something) {
   String tmp = "Hi";
}

//tmp is not accessible here

if(somethingElse) {
   String tmp = "Bye";
   //tmp is a different variable, not related to the previous one
}

当你有

String[] stockSPLIT = {"",""};

在页面顶部&#34;&#34;正如您所提到的,您正在创建一个可通过类访问的成员变量。请注意&#34;页面顶部&#34;不是它工作的原因,你可以在任何方法之外的页面底部替换它。

答案 1 :(得分:1)

如果有效则旧功能实际上是不正确的。可变可达性受其范围的限制:

if (...)
{ // new scope
    String[] stockSPLIT = ...;
} // scope ends, all variables declared inside it are now unreachable

你的修补程序也无法正常工作,因为它不是使用旧的变量,而是创建一个新的,完全不同的版本,它恰好具有相同的名称。正确的解决方案是:

String[] stockSPLIT = {};
if (...) {
    stockSPLIT = ...; // no String[] here
}

if (stockSPLIT.length > 2)