J2me RecordStore қатесі: java.lang.NullPointerException: 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;
    }
0
Қате қандай қате пайда болады?
қосылды автор millimoose, көзі

2 жауаптар

Алғашқы нөлдік сілтегіш ерекшелігі мұнда келуі мүмкін, егер функцияға жол берілген болса, бос болады

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

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

Екінші нөлдік көрсеткіш Мұнда ерекше жағдай болуы мүмкін, сіз бос функцияда функцияны шақыра алмайсыз

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

Инициализациялау rs

Үшінші NUll көрсеткішті алып тастау осында болуы мүмкін

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

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

1
қосылды
Рахмет Zohaib ... Сіз мені құтқардыңыз (Қазір ол жұмыс істейді) ... Мен бұрын массивді инициализацияладым, бірақ оны нөлге ауыстырдым ...
қосылды автор Krishna, көзі

Мұны өзгертіңіз:

RecordStore.openRecordStore(REC_STORE, true);

Бұған:

rs = RecordStore.openRecordStore(REC_STORE, true);
0
қосылды
Рахмет @albert, мен бұл туралы білмедім ...
қосылды автор Krishna, көзі