org.apache.jasper.JasperException: An exception occurred processing

2020-05-22 教育 63阅读
这还不明白吗?
这代码是“双死”的循环。
1、i=0,List集合的范围本就是0 to size,你循环i<=lis.size(),而不是i2、你一边i++,一边在if里i=i+1,一旦if成立,那么i的范围就绝对超过了lis(list不好说,看你装的什么)中数据的极限,循环就会溢出。
结果毫无悬念,第43行集合溢出,实际上是你的循环方式错误造成的: if(((news)list.get(i)).getAge().equals((lis.get(i))))
PS:这个强转的news是什么东西?!你自定义的对象?……
---------
补充:
事实上,应该直接用sql联合查询,最后返回结果即可。但如果按照你的思路,那么就应该写成类似这样。

//假设题库中有三道题,标准答案顺序为A,B,C
List list =new ArrayList(3);
list.add("A");
list.add("B");
list.add("C");

//我用数组举个例子,事实上不可能这么简单。假设答题与答案顺序一一对应,第一项为答题人,第二项为答案,答题如下所示
String[][] result = {{"小强","A",},{"小弱","B"},{"小明","A"}};
String[][] result1 = {{"小强","B",},{"小弱","A"},{"小明","C"}};
String[][] result2 = {{"小强","C",},{"小弱","A"},{"小明","C"}};

List lis=new ArrayList(3);
lis.add(result);
lis.add(result1);
lis.add(result2);

for(int i=0;i //答题结果
String[][] results = (String[][])lis.get(i);
//正确条件
String success = (String)list.get(i);
//循环答题结果
for(int j=0;j //对比答案
if(success.equalsIgnoreCase(results[j][1])){
System.out.println(("第"+(i+1)+"题:"+results[j][0]+"答对了").intern());
}
}
}

//你将println的结果存储下来,就有你要的成绩了。(这只是个例子,具体要根据需求变化)
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com