刚接触JAVA,可能问的问题很白痴,请见谅
我的代码:
public int check(Insurant insurant) throws SQLException {
// TODO Auto-generated method stub
Insurant ins=idt.Find(insurant.getInsname());
//System.out.println(ins.getInsname());
String psd=insurant.getPswd();
String password=ins.getPswd();
int i=psd.compareTo(password);
return i;
}
登陆验证密码的方法。
问题是,从数据库返回的 实体对象ins肯定是对的,非空。
我要比较ins.getPswd()和原来传进来的密码。
int i=psd.compareTo(password);出错!我用bealean i=psd.equal(password);一样出错。
我觉得很简单的代码,就是不知道哪错了
我的代码:
public int check(Insurant insurant) throws SQLException {
// TODO Auto-generated method stub
Insurant ins=idt.Find(insurant.getInsname());
//System.out.println(ins.getInsname());
String psd=insurant.getPswd();
String password=ins.getPswd();
int i=psd.compareTo(password);
return i;
}
登陆验证密码的方法。
问题是,从数据库返回的 实体对象ins肯定是对的,非空。
我要比较ins.getPswd()和原来传进来的密码。
int i=psd.compareTo(password);出错!我用bealean i=psd.equal(password);一样出错。
我觉得很简单的代码,就是不知道哪错了
错误代码:警告: Unhandled exception
java.lang.NullPointerException
at java.lang.String.compareTo(String.java:997)
at com.bestin.biz.InsurantManagerImpl.check(InsurantManagerImpl.java:18)
at com.bestin.struts.LoginAction.execute(LoginAction.java:39)
String psd=insurant.getPswd(); // 应该是insurant中的pswd字段值为空
System.out.println(psd == null);
String password=ins.getPswd();
System.out.println(password == null);
int i=psd.compareTo(password);
String psd=insurant.getPswd();
System.out.println(psd);
String password=ins.getPswd();
System.out.println(password);
int i=psd.compareTo(password);
1 s为空时出错,空指针出错.
建议你判断一下是否为空。
2 如果 s,o,有一个为常量,(如o是肯定有值)建议用 o.equals(s),这样肯定不会出错。
还有 s.equals(""),改成 "".equals(o),保证不出错。
自己解决问题,这样才可进度,发展。不要碰到怎么问题就急的求别人,
就拿你楼主的问题来说,有很多的程序员都碰到这样问题。不管包含老的程序员还是新手程序员
都会碰到,所以进行代码的写的时候要考虑几点:
1.空的NULL异常。
2.字段控制的长度。
3.数据类型一致性。