Java 我收到错误500和空指针异常
我正在做一个关于java在线考试的项目。 我面临一个问题 在开始的基础上,我的数据库中有15个问题,我正在按顺序获取这些问题。 问题是,如果我尝试所有答案,我会得到结果,否则我会得到Java 我收到错误500和空指针异常,java,forms,jsp,Java,Forms,Jsp,我正在做一个关于java在线考试的项目。 我面临一个问题 在开始的基础上,我的数据库中有15个问题,我正在按顺序获取这些问题。 问题是,如果我尝试所有答案,我会得到结果,否则我会得到error 500和NullPointerException。问题是多项选择题。每个问题都有四个选择。如果我没有尝试所有的问题,那么我会得到上面的错误 <%@page import="java.sql.*"%> <% String st[] = new String[20]; St
error 500
和NullPointerException
。问题是多项选择题。每个问题都有四个选择。如果我没有尝试所有的问题,那么我会得到上面的错误
<%@page import="java.sql.*"%>
<%
String st[] = new String[20];
String ans[] = new String[20];
int k=0;
//int length = Integer.parseInt(request.getAttribute("length").toString());
for (int i = 0; i < 15; i++)
{
int j = i + 1;
st[i] = request.getParameter("radio" + j);
System.out.println(st[i]);
}
Class.forName("oracle.jdbc.OracleDriver");
Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "root", "root");
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("Select ANS from ANSWERS order by ID");
//String ans = "";
int t;
while (rs.next()) {
ans[k] = rs.getString("ans");
k++;
System.out.println(ans[k]);
}
int count = 0;
//String answers[] = ans.split(" ");
for (int i = 0; i < 15; i++) {
if (st[i].equals(ans[i])) {
count++;
}
}
out.println("Your " + count + " answers are correct");
%>
我想说的是,您的答案并没有随您的请求一起提交。如果某个问题的无线组没有选定的值,则该无线组不会成为提交表单后您正在处理的POST请求的一部分 这就是为什么首先会出现空指针异常。 我无法运行上面的示例,但我假设错误发生在示例末尾的比较行中:
if (st[i].equals(ans[i])) {
更新要快速修复,只需将计算值:
st[i].equals(ans[i])
切换到ans[i].equals(st[i])
。这样,您就可以始终对null进行等于运算,并获得正确的计数。在代码开始时,您正在使用request.getParameter(“radio”+j)初始化st[]
代码>这可能为空。根据forgetParameter()
:
以字符串形式返回请求参数的值,如果
参数不存在
因此,当您尝试执行以下代码时:
for (int i = 0; i < 15; i++) {
if (st[i].equals(ans[i])) {
count++;
}
}
for(int i=0;i<15;i++){
if(st[i].等于(ans[i])){
计数++;
}
}
有可能st[i]
实际上是null
。这可能是代码中出现NullPointerException
的原因您应该将您的逻辑封装在try-catch和finally-handle中,以处理连接的SQL异常rs(在单独的try-catch块中)
另外,试着在堆栈跟踪处查找,看看哪一行出现空指针异常你的意思是如果你不尝试所有的问题,那么你就得到了错误?在代码中使用断点,看看错误pop上传到哪一行,了解空指针异常的意思空指针异常说了什么?这通常会给出一些提示,指出意外的空值在哪里。JSP中的代码块让我畏缩。JSP中的数据库代码让我哭哭啼啼。永远不要编写假定某个参数会或不会从客户端包含的逻辑。改为在服务器上处理空方案。@pap这一点你是对的。我只是想快速解决这个问题,这个问题已经是一团糟了,但没有多大帮助。