我正在创建一个包含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());
}
但是我不能让它工作,任何人都可以帮我解决这个问题?谢谢
答案 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);
}
}