做了一个注册和登录的。注册放到MAP,登录的时候进行比较。大意如下:
/*
 * ID类,[抽象类]
 *///省略部分代码private String user ;
private String password;//set,get的省略Map <Object,Object> idinput = new HashMap();/*
 *Regigster类,继承Id
 *///省略部分代码System.out.println ("输入用户名:")
setUser(sc.next);
System.out.println ("输入密码:")
setPassword(sc.next);
//用户名及密码的验证
idinput.put(getUser(),getPassword());//存入MAP/*
 *Login类,继承ID
 *///用了很多方法没弄好,请提示下这该怎么写。。只实现验证新输入的用户名和密码是否在MAP里面有相对的//自己这么写的if(getUser().equals(idinput.get(o)));//别的不知道了,求指导。。

解决方案 »

  1. if (idinput.containsKey(getUser()) && getPassword().equals(idinput.get(getUser()))) {
    ...
    }
      

  2. 楼主这种的话,就根据key(也就是用户id),取出对应的value,看是不是输入的password,如果是就说明匹配到了。
      

  3. 试了那个方法还是不行上源代码。。
    //Id类public abstract class Id {

    private String user ; //用户名
    private String password ; //密码
    Scanner sc = new Scanner (System.in);

    //录入用户名

    public void setUser (String user){
    this.user=user;
    }

    public String getUser (){
    return user;
    }

    //录入密码

    public void setPassword (String password){
    this.password=password;
    }

    public String getPassword (){
    return password ;
    }


    /**
     * 定义用户名
     */

    Map <Object,Object> idinput = new HashMap(); //定义用户名,密码的输入
    }
    //注册类public class Register extends Id { public Register() {
    super();
    }

    /*
     * 录入用户名和密码
     */

    public void registers (){
    System.out.println("输入用户名>>>>>>大于6位:");
    setUser(sc.next());//录入用户名
    if (getUser().length()>6){
    //用户名长度符合要求时不输出
    //否则输出错误提示
    System.out.println("输入密码>>>>>>大于10位");
    setPassword(sc.next());//录入密码
    if (getPassword().length()>10){
    //密码长度符合要求时不输出提示
    idinput.put(getUser(), getPassword());//当用户名和密码都正确的时候,即存入Map中.
    }else{
    System.out.println(">..<密码长度不够");
    }
    }else {
    System.out.println(">..<.用户名长度不够啊,亲");
    }

    }}
    public class Login extends Id { /**
     * 定义登陆
     */

    public Login (){
    super();
    }

    /*private String user1 ; //用户名
    private String password1; //密码
    Scanner sc = new Scanner (System.in);

    //录入用户名

    public void setUser1 (String user1){
    this.user1=user1;
    }

    public String getUser1 (){
    return user1;
    }

    //录入密码

    public void setPassword1 (String password1){
    this.password1=password1;
    }

    public String getPassword1 (){
    return password1 ;
    }

    */





    public void logins (){

    System.out.println(">>>>>>>>>>>>欢迎光临登陆>>>>>>>>>>>>>>>");
    System.out.println("请输入用户名:");
    setUser(sc.next());
    System.out.println("请输入密码:");
    setPassword(sc.next());
    if (idinput.containsKey(getUser())&&idinput.containsKey(getPassword())){//取出Map里面的值和新输入的值比较,然后返回状态(true/false)
    //用户名正确,不输出
    // if (getPassword().equals(idinput.containsValue(getPassword()))){
    // //密码正确不输出
    // }
    System.out.println("登陆成功>>>>>>");
    }else{
    System.out.println("登陆失败!");
    }
    // System.out.println(getUser().equals(idinput.containsKey(getUser())));//用户名
    // System.out.println(getPassword().equals(idinput.containsValue(getPassword())));//密码
    }

    }
      

  4. 你的main方法怎么调用的?
    Register和Login是两个不同的类,如果你new了两个对象,那么idinput就是不同对象里的map,里面的信息是不一样的
    最简单的方法就是LZ把Id类的
    Map <Object,Object> idinput = new HashMap(); //定义用户名,密码的输入
    改成
    static Map <Object,Object> idinput = new HashMap(); //定义用户名,密码的输入
    这样Register和Login就能共享这个map了
      

aliyun

类似问题 »