Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
toString()在不相关的更改后不工作。我在Java的WEKA中找不到toString()_Java_Weka_Tostring - Fatal编程技术网

toString()在不相关的更改后不工作。我在Java的WEKA中找不到toString()

toString()在不相关的更改后不工作。我在Java的WEKA中找不到toString(),java,weka,tostring,Java,Weka,Tostring,最近我正在开发WEKA,输出随机森林的详细规则。 我正在处理的类具有以下层次关系: public class RandomForest extends Classifier { public Bagging m_bagger; public String toString(){ return "other"+m_bagger.toString(); } } public class Bagging extends Rando

最近我正在开发WEKA,输出随机森林的详细规则。
我正在处理的类具有以下层次关系:

public class RandomForest extends Classifier {
       public Bagging m_bagger;
       public String toString(){
              return "other"+m_bagger.toString(); 
       }
}
public class Bagging extends RandomizableIteratedSingleClassifierEnhancer{
       // no relative declaration
       public String toString(){
              return "other"+m_Classifiers[i].toString(); //changes I made
       }
}
public abstract class RandomizableIteratedSingleClassifierEnhancer extends IteratedSingleClassifierEnhancer {
       // no relative declaration 
       // no toString()
}
public abstract class IteratedSingleClassifierEnhancer extends SingleClassifierEnhancer{
       public Classifier[] m_Classifiers;
       // no toString()
}
public abstract class SingleClassifierEnhancer extends Classifier{
       protected Classifier m_Classifier = new ZeroR();
       // no toString()
}
public abstract class Classifier{
       // no toString()
}
在我更改之前,代码运行良好。
在我更改它之后,如果我读入数据并亲自训练一个WEKA模型,它也会工作得很好。
但是,如果我加载教授给我的模型,然后运行toString(),它会报告以下行:

java.lang.NullPointerException
    at weka.classifiers.trees.RandomTree.leafString(RandomTree.java:656)
    at weka.classifiers.trees.RandomTree.toString(RandomTree.java:678)
    at weka.classifiers.trees.RandomTree.toString(RandomTree.java:707)
    at weka.classifiers.trees.RandomTree.toString(RandomTree.java:700)
它无限重复这些行,直到我的内存耗尽

我已经调试并发现错误在

m_Classifiers[i].toString()   
相关代码为(随机森林类):

它工作得很好。
出于同样的原因,我不认为m_分类器可以为空
我将一些“受保护”更改为“公共”,但在进行此更改之前,它不起作用

为了回应Jim的评论,下面是
RandomTree.java


很抱歉,我没有在这里粘贴代码,因为从第626行到第715行大约有100行相对代码
eclipse错误中实际上有更多的行,与第656行、第678行、第700行、第707行和第642行相关。所有这些行都在调用
leafString()
toString(int)

现在我猜我的问题是我没有一个合适的int来表示
toString(int)

第656行是

int maxIndex = Utils.maxIndex(m_Distribution[0]);

因此,
m_分布
为空。如果
m_Distribution[0]
为空,则错误将发生在
Utils.maxIndex
中,我假设它是一个静态方法。

显示引发异常的完整语句。如果在
m\u分类器[i].toString()
中获得NPE,唯一的可能性是
m\u分类器[i]
为空或
m\u分类器
为空。既然你说第二个不是这样,那么它一定是第一个,那么存储在
m\u Classifiers[i]
的引用值为空。谢谢,@JimGarrison我已经更新了完整的语句。但是,我在运行
m_分类器[I].debugTipText()时会得到结果。因此,我认为
m_分类器[I]
为空可能不是问题所在。ThanksSomewhere在类层次结构中有一个依赖于内部状态为null的
toString()
。weka.classifiers.trees.RandomTree.leafString(RandomTree.java:656)上有什么内容?
?Hi@JimGarrison请看这篇文章,我在末尾添加了代码和一些解释。第656行是
int-maxIndex=Utils.maxIndex(m_分布[0])--因此
m_分布
为空。如果
m_Distribution[0]
为空,则错误将发生在
Utils.maxIndex
内部(我假设
Utils.maxIndex()
是一个静态方法)。
m_Classifiers[i].debugTipText()
int maxIndex = Utils.maxIndex(m_Distribution[0]);