Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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
使用weka时java中的NullPointerException_Java_Nullpointerexception_Weka - Fatal编程技术网

使用weka时java中的NullPointerException

使用weka时java中的NullPointerException,java,nullpointerexception,weka,Java,Nullpointerexception,Weka,当我尝试使用WEKAAPI进行装箱时,它总是得到NullPointerException,除非在调试注释块中写入。 有人能给我解释一下吗?我是JAVA新手,已经读过文档了,但还是搞不懂 这是我的测试pj: public static void main(String[] args) throws Exception{ Scanner _input = new Scanner(System.in); String path = ""; Syste

当我尝试使用WEKAAPI进行装箱时,它总是得到NullPointerException,除非在调试注释块中写入。 有人能给我解释一下吗?我是JAVA新手,已经读过文档了,但还是搞不懂

这是我的测试pj:

public static void main(String[] args) throws Exception{

        Scanner _input = new Scanner(System.in);
        String path = "";

        System.out.print("Input data path: ");
        path = _input.nextLine();

        /*Init data source*/
        DataSource source = new DataSource(path);
        Instances data = source.getDataSet();

        /*if (data.classIndex() == -1)
               data.setClassIndex(data.numAttributes() - 1);*/

        /*Debug section*/ //THIS SECTION WORKS FINE

        /*Discretize _dis = new Discretize();
        _dis.setInputFormat(data);
        _dis.setBins(10);
        data = Filter.useFilter(data, _dis);
        System.out.print(data.firstInstance());
        System.exit(2);*/


                    System.out.println("Select sub function: \n"
                                + "1. Equal-width\n"
                                + "2. Equal-depth\n");
                    System.out.print("Input selection: ");
                    int select = _input.nextInt();


                    Discretize _dis = new Discretize();
                    _dis.setInputFormat(data);
                    _dis.setAttributeIndices("first-last");


                    if (select == 1) {
                        _dis.setBins(_input.nextInt());
                    }
                    else {
                        _dis.setDesiredWeightOfInstancesPerInterval(_input.nextDouble());
                        _dis.setUseEqualFrequency(true);
                    }

                    data = Filter.useFilter(data, _dis); //NULL POINTER EXCEPTION HERE
                    System.out.print(data.firstInstance());

    }

当您试图访问某个对象方法或字段,但该对象为null或尚未初始化时,就会发生NullPointerException。在您的特定情况下,我认为您在注释之后的行中得到了NullPointerException。只需您的指示:

data = Filter,useFilter(data, _dis);
正在返回空数据(null)和下一行:

System.out.print(data.firstInstance())

正在尝试打印数据的(或null)第一个实例,这里是异常发生的地方

要解决此问题,只需在之前添加一个控件,如下所示:

data = Filter.useFilter(data, _dis);
if(data!=null)System.out.print(data.firstInstance());
else System.out.println("Empty data.");

谢谢你的关心,可能是重复的。但我想知道为什么在调试部分它工作得很好,但在主部分它得到了NPE,我希望var数据工作,但不知道如何修复这一问题,请尝试注释这一行:_dis.setAttributeIndicates(“first-last”);你的输入值是多少?它在调试块中是否与相同的程序一起工作?它与相同的程序一起工作_dis.setAttributeIndexes只是过滤器的一个配置,所以cmt输出该行无关紧要,我已经尝试过了,但仍然不起作用。我认为问题在于过滤器限制太多,这就是为什么要返回空数据。因此,我的建议是尝试对每个过滤器选项逐一进行注释,这样您就可以找出哪一个(甚至可能不止一个)阻止您返回任何数据。