J2me RecordStore 错误:java.lang.NullPointerException:0 - 下面的代码有什么问题

发布于 2024-12-12 16:23:37 字数 1580 浏览 4 评论 0原文

下面所示的功能有什么问题吗?我在调试器中运行此代码时发现的唯一错误是“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;
    }

Is there anything wrong in function shown below. The only bug that I found while running this code in debugger is "java.lang.NullPointerException: 0". I wasted my last many hours in figuring out "what is causing this error", Somebody pls help.

 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;
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

固执像三岁 2024-12-19 16:23:37

第一个空指针异常可能出现在这里,如果传递给函数的字符串为空,

 if (mydata.equals("Logged")) {

请将其更改为 if ("Logged".equals(myData)) {

第二个空指针异常可能出现在此处,您无法调用函数在空对象上

for(int i = 1; i <= rs.getNumRecords(); i++){

初始化 rs

第三个 NUll 指针异常可能会出现,

output[0] = "rexists";
output[1] = sb.trim();

因为数组输出未初始化,将数组初始化为 String [] output = new String[2]

First Null pointer exception can come here, if string passed to the function is null

 if (mydata.equals("Logged")) {

change this to if ("Logged".equals(myData)) {

Second Null pointer Exception can come here, you cannot invoke function on null object

for(int i = 1; i <= rs.getNumRecords(); i++){

Initialize rs

Third NUll pointer exception can come here

output[0] = "rexists";
output[1] = sb.trim();

because array output is not initialized, initialize array as String [] output = new String[2]

深海少女心 2024-12-19 16:23:37

改变这个:

RecordStore.openRecordStore(REC_STORE, true);

到这个:

rs = RecordStore.openRecordStore(REC_STORE, true);

Change this:

RecordStore.openRecordStore(REC_STORE, true);

To this:

rs = RecordStore.openRecordStore(REC_STORE, true);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文