[英]NullPointerException in java when using weka
當我嘗試使用 weka API 進行分箱時,除非在 Debug 注釋塊中寫入,否則它總是得到 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());
}
每當您嘗試訪問某個對象方法或字段但該對象為空或尚未初始化時,就會發生 NullPointerException。 在您的特定情況下,我認為您在評論后在行中收到 NullPointerException 。 只需您的指令:
data = Filter,useFilter(data, _dis);
正在返回空數據(空)和下一行:
System.out.print(data.firstInstance());
正在嘗試打印數據的(或 null) firstInstance ,這里是發生異常的地方。
要解決此問題,只需在此之前添加一個控件:
data = Filter.useFilter(data, _dis);
if(data!=null)System.out.print(data.firstInstance());
else System.out.println("Empty data.");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.