设置空值

时间:2011-09-11 18:06:11

标签: android sqlite charts

我正在创建一个包含sqlite的x和y值的图表。

我的代码是这样的:

   Double a, b;

       notesCursor.moveToFirst();
   do {
       a = notesCursor.getDouble(notesCursor.getColumnIndex(DbAdapter.KEY_ROWID));
       b = notesCursor.getDouble(notesCursor.getColumnIndex(DbAdapter.KEY_RESULT));  
       mCurrentSeries.add(a, b);
   }while(notesCursor.moveToNext());

当我没有向我的sqlite插入任何xy值时,错误消息就出来了......我想添加一些代码,即使我没有在我的数据库中插入任何xy值,图表也会出来0,0值...

我一直在制作这样的代码:

Double a, b;
   if(a==null && b==null){
       mCurrentSeries.add(0.0, 0.0);
   }
   else{      
       notesCursor.moveToFirst();
   do {
       a = notesCursor.getDouble(notesCursor.getColumnIndex(DbAdapter.KEY_ROWID));
       b = notesCursor.getDouble(notesCursor.getColumnIndex(DbAdapter.KEY_RESULT));  
       mCurrentSeries.add(a, b);
   }while(notesCursor.moveToNext());
   }

但是我不能让它工作,任何人都可以帮我解决这个问题?谢谢

2 个答案:

答案 0 :(得分:1)

您可以将值INITIALISES编码为非null(0.0),但它永远不会保证在将它们赋予mCurrentSeries.add方法之前它们不会为null。在你之前的代码中,如果a和b的开头不为null,则if中的else将被执行,然后执行do while。如果在do中,当noteCursor.getDouble为a或b返回null时,则a和/或b将为null。如果你需要的是a和b在通过add方法到达你的mCurrentSeries对象时不为null,你应该修改add方法,当它们为null时给a和b一些默认值。

答案 1 :(得分:0)

新代码不保证传递给mCurrentSeries.add方法时a和b不为null:

import java.util.HashMap;

import java.util.Map;

公共类C {     双a,b;     映射mCurrentSeries = new HashMap();     NotesCursor notesCursor = new NotesCursor();

public void yourMethod() {
    if (a == null && b == null) {
        mCurrentSeries.put(0.0, 0.0);
    } else {
        // notesCursor.moveToFirst();
        do {
            a = notesCursor.getDouble();
            b = notesCursor.getDouble();
            mCurrentSeries.put(a, b);
        } while (notesCursor.moveToNext());
    }
}

private static class NotesCursor {
    boolean b = false;

    public Double getDouble() {
        return null;
    }

    public boolean moveToNext() {
        return !b;
    }
}

public static void main(String... args) {
    C c = new C();
    c.yourMethod();
    System.out.println("a="+c.a);
    System.out.println("b="+c.b);
}

}