黑马程序员技术交流社区

标题: 注册完在登录会出现空指针异常,求改错 [打印本页]

作者: LJZkevin    时间: 2014-6-3 21:39
标题: 注册完在登录会出现空指针异常,求改错
  1. package cn.itcast.pojo;
  2. /**
  3. * 这是用户的描述类
  4. * @author Administrator
  5. *
  6. */

  7. public class User {
  8.         //用户名
  9.        
  10.         private String userName;
  11.         //密码
  12.        
  13.         private String passWord;
  14.         //邮箱
  15.         private String email;
  16.        
  17.         //电话
  18.     private String tell;
  19.    

  20.         public User() {
  21.                 super();
  22.                 // TODO Auto-generated constructor stub
  23.         }

  24.         public User(String userName, String passWord, String email, String tell) {
  25.                 super();
  26.                 this.userName = userName;
  27.                 this.passWord = passWord;
  28.                 this.email = email;
  29.                 this.tell = tell;
  30.         }

  31.         public String getUserName() {
  32.                 return userName;
  33.         }

  34.         public void setUserName(String userName) {
  35.                 this.userName = userName;
  36.         }

  37.         public String getPassWord() {
  38.                 return passWord;
  39.         }

  40.         public void setPassWord(String passWord) {
  41.                 this.passWord = passWord;
  42.         }

  43.         public String getEmail() {
  44.                 return email;
  45.         }

  46.         public void setEmail(String email) {
  47.                 this.email = email;
  48.         }

  49.         public String getTell() {
  50.                 return tell;
  51.         }

  52.         public void setTell(String tell) {
  53.                 this.tell = tell;
  54.         }

  55.         @Override
  56.         public String toString() {
  57.                 return "User [userName=" + userName + ", passWord=" + passWord
  58.                                 + ", email=" + email + ", tell=" + tell + "]";
  59.         }
  60.    
  61. }



  62. package cn.itcast.dao;

  63. import cn.itcast.pojo.User;

  64. /**
  65. * 用户操作接口
  66. * @author Administrator
  67. *
  68. */
  69. public interface UserDao {
  70.        

  71.         public abstract boolean isLogin(String userName, String passWord);
  72.        
  73.         public abstract void  regist(User user);
  74.        
  75.         //?
  76. }


  77. package cn.itcast.dao.impl;

  78. import cn.itcast.dao.UserDao;
  79. import cn.itcast.pojo.User;


  80. /**
  81. * 用户操作实现类
  82. *
  83. * @author Administrator
  84. *
  85. * 用户操作实现类
  86. *
  87. * @author itcast 如何实现呢? 如果是注册一个用户,用User保存即可。 但是,注册肯定不止一个用户,所以我们得想想用什么存储?
  88. *         目前我们学过的能够存储的:对象,对象数组。 通过分析,我们最终选择对象数组。 问题:用对象数组,就得定义数组,定义数组,就得知道长度。
  89. *         不知道,我也不知道。所以,对象数组不够好。最终选择集合。 不过,集合还没学呢,所以,我们还是只能使用对象数组。 自己给一个固定长度:5
  90. *
  91. */

  92. public class UserDaoImpl implements UserDao{
  93.        
  94.         // 定义成员变量的数组
  95.         private static User []user2=new User[4];
  96.         //注意static小技巧
  97.         private static int index=0;

  98.         public boolean isLogin(String userName, String passWord) {
  99.                 /*
  100.                  * 遍历数组,获取到每一个对象,然后再拿对象的用户名和密码和传递过来的用户名和密码进行比较
  101.                  */
  102.                 boolean flag = false;
  103.                 for (int i = 0; i < user2.length; i++) {
  104.                         //User user1 = user2[i];
  105.                        
  106.                         if (user2[i] != null) {

  107.                                 if (user2[i].getUserName().equals(userName)
  108.                                                 && user2[i].getPassWord().equals(passWord)) {

  109.                                         flag = true;
  110.                                         break;
  111.                                 }

  112.                         }
  113.                        
  114.                 }
  115.                 return flag;
  116.                
  117.         }

  118.         public void regist(User user) {
  119.                         user2[index++]=user;
  120.                
  121.         }
  122.        
  123.        
  124.        

  125. }



  126. package cn.itcast.text;

  127. import java.util.Scanner;

  128. import cn.itcast.dao.impl.UserDaoImpl;
  129. import cn.itcast.pojo.User;

  130. public class UserText {
  131.         public static void main(String[] args) {
  132.                 while (true) {
  133.                         System.out.println("欢迎来到itcast");
  134.                         System.out.println("1:登录");
  135.                         System.out.println("2:注册");
  136.                         System.out.println("3:退出");
  137.                         System.out.println("请选择:");
  138.                         Scanner sc = new Scanner(System.in);
  139.                         String line = sc.nextLine();
  140.                         switch (line) {
  141.                         case "1":
  142.                                 System.out.println("欢迎来到登录界面");
  143.                                 System.out.println("请输入用户名:");
  144.                                 String username = sc.nextLine();
  145.                                 System.out.println("请输入密码:");
  146.                                 String password = sc.nextLine();
  147.                                 // 多态用法
  148.                                 // UserDao ud = new UserDaoImpl();
  149.                                 // 具体类用法
  150.                                 UserDaoImpl udi = new UserDaoImpl();
  151.                                 boolean flag = udi.isLogin(username, password);
  152.                                 if (flag) {
  153.                                         System.out.println("开始玩游戏吧");
  154.                                         System.exit(0);
  155.                                 } else {
  156.                                         System.out.println("登录失败,返回主界面");
  157.                                 }
  158.                                 break;
  159.                         case "2":
  160.                                 System.out.println("欢迎来到注册界面");
  161.                                 // 键盘录入用户信息
  162.                                 System.out.println("请输入用户名:");
  163.                                 String newUsername = sc.nextLine();
  164.                                 System.out.println("请输入密码:");
  165.                                 String newPassword = sc.nextLine();
  166.                                 System.out.println("请输入邮箱:");
  167.                                 String newEmail = sc.nextLine();
  168.                                 System.out.println("请输入电话:");
  169.                                 String newPhone = sc.nextLine();

  170.                                 // 把数据用对象进行封装
  171.                                 User user = new User();
  172.                                 user.setPassWord(newUsername);
  173.                                 user.setPassWord(newPassword);
  174.                                 user.setEmail(newEmail);
  175.                                 user.setTell(newPhone);

  176.                                 // 创建用户操作类对象
  177.                                 UserDaoImpl newUdi = new UserDaoImpl();

  178.                                 // 调用注册方法
  179.                                 newUdi.regist(user);
  180.                                 System.out.println("注册成功");
  181.                                
  182.                                 break;
  183.                         case "3":
  184.                                 // System.out.println("谢谢你的使用");
  185.                                 // System.exit(0);
  186.                                 // break;
  187.                         default:
  188.                                 System.out.println("谢谢你的使用");
  189.                                 System.exit(0);
  190.                                 break;
  191.                         }
  192.                 }
  193.                
  194.         }

  195. }
复制代码

作者: 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