日期:2014-05-19  浏览次数:20715 次

【求帮助】初学用java编写一个指纹考勤程序
package service.account;

import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.ResultSet;
import bean.account.FingerPrintInfos;
import database.Conn;

public class FingerInfosBean {
private Conn conn = null;
private Integer UserId;
private FingerPrintInfos[] FPIOS;

public FingerInfosBean()
{
conn = new Conn();
}

public int getUserId() {
return UserId;
}
public void setUserId(Integer userId) {
UserId = userId;
}
public void test()
{
System.err.println("UserId="+getUserId());
}

public FingerPrintInfos[] getUserFingerPrintInfos()
{
if(UserId>0)
{
try{
/* String sql = "select TEMPLATEID,FINGERID,DivisionFP from TEMPLATE where USERID=?";
PreparedStatement pstmn = conn.getPstmn(sql);
pstmn.setInt(0,UserId);
ResultSet Rs = pstmn.executeQuery();*/

String sql = "select TEMPLATEID,FINGERID,DivisionFP from TEMPLATE where USERID="+UserId;
ResultSet Rs = conn.executeQuery(sql);

int i=0;
while(Rs.next())
{
FPIOS[i] = new FingerPrintInfos();
FPIOS[i].setFingerPrintId(Rs.getInt("TEMPLATEID"));
FPIOS[i].setFingerNum(Rs.getInt("FINGERID"));
FPIOS[i].setDivisionFP(Rs.getInt("DivisionFP"));
FPIOS[i].setUserId(UserId);
i++;
}
}catch(SQLException e)
{
e.printStackTrace();
}
return FPIOS;
}else
return null;
}

}
这段程序已经调试了好久了,始终没起色,好悲剧。
在运行到红字代码处,出现 java.lang.NullPointerException 异常,之前在构造函数那声明10个对象,这里后面的代码也会出错,不知道为啥,明明已经声明了,可还是会 java.lang.NullPointerException。请大家帮我看下是哪里的问题,因为这样子的程序后面还会遇到好多的。

------解决方案--------------------
FingerPrintInfos[] FPIOS 没有指定初始化多少个 数组必须指定初始大小,并且一旦指定不能更改了就。
如 FingerPrintInfos[] FPIOS = new FingerPrintInfos[3];
如果不知道大小或者每次查询都不一样 建议改为list 或者先查询多少条记录,再初始化大小
------解决方案--------------------
指针乃万恶之源!!
个数不固定就不要用数组呀!
Array多好用呀!