下面显示的函数有什么问题吗?我在调试器中运行此代码时发现的唯一错误是"java.lang.NullPointerException: 0“。我把最后的几个小时浪费在搞清楚“是什么导致了这个错误”,有人来帮忙吧。
public String[] addRECORD(String mydata){
String[] output = null;
try {
RecordStore rs = null;
String sb = null;
RecordStore.openRecordStore(REC_STORE, true);
if (mydata.equals("Logged")) {
byte[] recData = new byte[5];
int len;
for(int i = 1; i <= rs.getNumRecords(); i++){
if(rs.getRecordSize(i) > recData.length){
recData = new byte[rs.getRecordSize(i)];
}
len = rs.getRecord(i, recData, 0);
sb += new String(recData, 0, len);
}
if (sb != null) {
output[0] = "rexists";
output[1] = sb.trim();
} else {
output[0] = "notlogged";
output[1] = sb.trim();
}
}else{
byte[] rec = mydata.getBytes();
try{
rs.addRecord(rec, 0, rec.length);
}catch (Exception e){}
output[0] = "radded";
output[1] = mydata;
}
rs.closeRecordStore();
} catch (RecordStoreException ex) {
responder(ex.getMessage());
}
return output;
}
发布于 2011-10-28 18:56:26
首先,如果传递给函数的字符串为Null,则可以在这里出现空指针异常。
if (mydata.equals("Logged")) {
将此更改为if ("Logged".equals(myData)) {
第二,Null指针异常可以出现在这里,不能调用空对象上的函数。
for(int i = 1; i <= rs.getNumRecords(); i++){
初始化rs
第三个NUll指针异常可以出现在这里
output[0] = "rexists";
output[1] = sb.trim();
由于数组输出未初始化,所以将数组初始化为String [] output = new String[2]
https://stackoverflow.com/questions/7933524
复制相似问题