黑马程序员技术交流社区
标题:
注册完在登录会出现空指针异常,求改错
[打印本页]
作者:
LJZkevin
时间:
2014-6-3 21:39
标题:
注册完在登录会出现空指针异常,求改错
package cn.itcast.pojo;
/**
* 这是用户的描述类
* @author Administrator
*
*/
public class User {
//用户名
private String userName;
//密码
private String passWord;
//邮箱
private String email;
//电话
private String tell;
public User() {
super();
// TODO Auto-generated constructor stub
}
public User(String userName, String passWord, String email, String tell) {
super();
this.userName = userName;
this.passWord = passWord;
this.email = email;
this.tell = tell;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getTell() {
return tell;
}
public void setTell(String tell) {
this.tell = tell;
}
@Override
public String toString() {
return "User [userName=" + userName + ", passWord=" + passWord
+ ", email=" + email + ", tell=" + tell + "]";
}
}
package cn.itcast.dao;
import cn.itcast.pojo.User;
/**
* 用户操作接口
* @author Administrator
*
*/
public interface UserDao {
public abstract boolean isLogin(String userName, String passWord);
public abstract void regist(User user);
//?
}
package cn.itcast.dao.impl;
import cn.itcast.dao.UserDao;
import cn.itcast.pojo.User;
/**
* 用户操作实现类
*
* @author Administrator
*
* 用户操作实现类
*
* @author itcast 如何实现呢? 如果是注册一个用户,用User保存即可。 但是,注册肯定不止一个用户,所以我们得想想用什么存储?
* 目前我们学过的能够存储的:对象,对象数组。 通过分析,我们最终选择对象数组。 问题:用对象数组,就得定义数组,定义数组,就得知道长度。
* 不知道,我也不知道。所以,对象数组不够好。最终选择集合。 不过,集合还没学呢,所以,我们还是只能使用对象数组。 自己给一个固定长度:5
*
*/
public class UserDaoImpl implements UserDao{
// 定义成员变量的数组
private static User []user2=new User[4];
//注意static小技巧
private static int index=0;
public boolean isLogin(String userName, String passWord) {
/*
* 遍历数组,获取到每一个对象,然后再拿对象的用户名和密码和传递过来的用户名和密码进行比较
*/
boolean flag = false;
for (int i = 0; i < user2.length; i++) {
//User user1 = user2[i];
if (user2[i] != null) {
if (user2[i].getUserName().equals(userName)
&& user2[i].getPassWord().equals(passWord)) {
flag = true;
break;
}
}
}
return flag;
}
public void regist(User user) {
user2[index++]=user;
}
}
package cn.itcast.text;
import java.util.Scanner;
import cn.itcast.dao.impl.UserDaoImpl;
import cn.itcast.pojo.User;
public class UserText {
public static void main(String[] args) {
while (true) {
System.out.println("欢迎来到itcast");
System.out.println("1:登录");
System.out.println("2:注册");
System.out.println("3:退出");
System.out.println("请选择:");
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
switch (line) {
case "1":
System.out.println("欢迎来到登录界面");
System.out.println("请输入用户名:");
String username = sc.nextLine();
System.out.println("请输入密码:");
String password = sc.nextLine();
// 多态用法
// UserDao ud = new UserDaoImpl();
// 具体类用法
UserDaoImpl udi = new UserDaoImpl();
boolean flag = udi.isLogin(username, password);
if (flag) {
System.out.println("开始玩游戏吧");
System.exit(0);
} else {
System.out.println("登录失败,返回主界面");
}
break;
case "2":
System.out.println("欢迎来到注册界面");
// 键盘录入用户信息
System.out.println("请输入用户名:");
String newUsername = sc.nextLine();
System.out.println("请输入密码:");
String newPassword = sc.nextLine();
System.out.println("请输入邮箱:");
String newEmail = sc.nextLine();
System.out.println("请输入电话:");
String newPhone = sc.nextLine();
// 把数据用对象进行封装
User user = new User();
user.setPassWord(newUsername);
user.setPassWord(newPassword);
user.setEmail(newEmail);
user.setTell(newPhone);
// 创建用户操作类对象
UserDaoImpl newUdi = new UserDaoImpl();
// 调用注册方法
newUdi.regist(user);
System.out.println("注册成功");
break;
case "3":
// System.out.println("谢谢你的使用");
// System.exit(0);
// break;
default:
System.out.println("谢谢你的使用");
System.exit(0);
break;
}
}
}
}
复制代码
作者:
shi980088
时间:
2014-6-3 21:42
用集合储存啊,为啥用数组啊
作者:
LJZkevin
时间:
2014-6-6 00:16
shi980088 发表于 2014-6-3 21:42
用集合储存啊,为啥用数组啊
还没学到集合呢,呵呵,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2