Nameless Site

But one day, you will stand before its decrepit gate,without really knowing why.

0%

Android开发小记

做了几天的软工作业,今天终于磨出了点东西了
虽然我负责的是比较水的出题模块,但是还是出现了许多智障操作。
我巴不得每一个类型写一个方法出来
最后记一下今天遇到的几个坑

  • 空指针异常
  • 空栈异常
  • 除数为0异常

空指针异常的出错代码为:

1
2
3
4
5
6
7
StatOfType E = new StatOfType();
for (int i = 0; i < 47; i++) {

E.setNum(10);
E.setTypeId(i+1);
typeList.add(E);
}

折磨了我一个下午之后,终于经过坤滨的提示找到了问题所在。
由于对象E是在循环外实例的,导致List里其实共享的是最后一个对象E的地址,于是List 在作为参数传参时,输出的都是最后一次修改的结果。
其次,由于对象E(StatOfType)类型初始时设置的id是0,这样在传参时,子函数在调用LitePal的find方法时会出错,返回一个空的List,所以也会导致空指针异常。

空栈异常的出错代码为:

1
aAns = (int)CalExpression.executeExpression(aProblem);

原因是因为 aProblem 的 Num1 没有增加String.Valueof(),这个方法,导致计算时出现了空栈异常。

除法异常的出错代码为:

1
2
3
4
5
private Integer GetRandomNum(int min,int max){
Random random = new Random();
//return random.nextInt(max) % (max - min + 1) + min;
return random.nextInt(max - min + 1) + min;
}

除法异常出错的原因在于注释的那一句 Javareturn random.nextInt(max) % (max - min + 1) + min;
max - min +1 存在可能为0的情况?但也不对,emmm反正就是这个改了就可以了
Random的nextInt()这个函数里对参数有要求>=0。