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

来源:百度知道 编辑:UC知道 时间:2024/05/17 00:28:22
org.apache.jasper.JasperException: An exception occurred processing JSP page /form/test.jsp at line 43

40: System.out.println(list.size());
41:
42: for(i=0;i<=lis.size();i++){
43: if(((news)list.get(i)).getAge().equals((lis.get(i))))
44: {
45: i=i+1;
46: }

Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.Hwsoft.project.servlet.examPro.doPost(examPro.java:82)
com.Hwsoft.project.servlet.examPro.doGet(examPro.java:48)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpSe

这还不明白吗?

这代码是“双死”的循环。

1、i=0,List集合的范围本就是0 to size,你循环i<=lis.size(),而不是i<lis.size(),结果每次循环完都多一个数,本身就必死。

2、你一边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&q