2016-08-21 58 views
-2

我想将用户名“carl”与密码“0001”以及其他元素相匹配,但它不起作用。任何人都可以解释我如何匹配“用户名”的每个元素与“密码”的元素?非常感谢你! 这是我的代码:在java中匹配用户名和密码索引的索引

class log{ 
    BufferedReader br= new BufferedReader(new InputStreamReader(System.in)); 
    String [] username ={"carl", "may", "joseph", "oliver", "ashley"}; 
    String []password={"0001", "0002", "0003", "0004", "0005"}; 

    public void login() throws IOException{ 
    System.out.print("\nUSERNAME: "); 
    uname=br.readLine(); 
    System.out.print("PASSWORD: "); 
    pword=br.readLine(); 

    for (j = 0; j <= 4; j++) { 
     if (username[j].equals(password[j])) { 
      uname=username[j]; 
      pword=password[j]; 
    }   
} 
while((!uname.equals(password[j]))&&(!pword.equals(username[j]))){ 
    System.out.println("Invalid username/password."); 
    System.out.print("\nUSERNAME: "); 
    uname=br.readLine(); 
    System.out.print("PASSWORD: "); 
    pword=br.readLine(); 
} 

public void main(String[] args)throws IOException { 
     log b=new log(); 
     b.login(); 
} 
+3

这就是所谓的*并行阵列*,是一个非常糟糕的模式。使用名称和密码作为字段的'class User'而不是使用多个数组。这将使您的逻辑更简单,更易于调试。 – chrylis

+0

* carl *等于* 0001 *如何?在你的if条件中,你必须比较* username [j] .equals(uname)&& passwords [j] .equals(pword)*。 –

+0

将-1置于该问题的人。我认为这个问题很明显。不要忘记,你的编程开始就是这样的。只是合作。 –

回答

0

我想你应该修改你的方法在下列方式

public void login() throws IOException { 
    System.out.print("\nUSERNAME: "); 
    uname = br.readLine(); 
    System.out.print("PASSWORD: "); 
    pword = br.readLine(); 

    while (!isValid(uname, pword)) { 
     System.out.println("Invalid username/password."); 
     System.out.print("\nUSERNAME: "); 
     uname = br.readLine(); 
     System.out.print("PASSWORD: "); 
     pword = br.readLine(); 
    } 
} 
//checks if the entered username and password are correct 
public boolean isValid(String uname, String pword) { 
    for (int j = 0; j <username.length; j++) { 
     if (username[j].equals(uname)) { 
      if (!password[j].equals(pword)) 
       return false; 
      else 
       return true; 
     } 
    } 
    return false; 
} 
+0

很好的帮助!非常感谢你! – denden

0

我觉得它更好,当你有一个额外的类User工作。

类看起来是这样的:

class User { 
    private String name; 
    private String pw; 
    public User (String name, String pw) { 
     this.name = name; 
     this.pw = pw; 
    } 
    public String getName() { 
     return this.name; 
    } 
    public String getPw() { 
     return this.pw; 
    } 
} 

在你的程序逻辑,你必须与所有用户的列表:

ArrayList<User> userList 

现在你有更改登录算法:

class log{ 
    BufferedReader br= new BufferedReader(new InputStreamReader(System.in)); 
    ArrayList<User> userList = ...; //Here you have to add all users first 

    boolean loginCheck = false; 
    while(loginCheck == false) { 
     System.out.print("\nUSERNAME: "); 
     uname = br.readLine(); 
     System.out.print("PASSWORD: "); 
     pword = br.readLine(); 
     for (int i = 0; i < userList.size(); i++) { 
      if (userList.get(i).getName.equals(uname) && userList.get(i).getPw.equals(pword)) { 
       loginCheck = true; 
       break; 
      } 
     } 

    }    
}  

public void main(String[] args)throws IOException { 
     log b=new log(); 
     b.login(); 
} 

如果将用户输入的检查更改为:

for (int i = 0; i < userList.size(); i++) { 
      if (userList.get(i).getName.equals(uname)) { 
       if (userList.get(i).getPw.equals(pword)) { 
        loginCheck = true; 
        break; 
       } else { 
        break; 
       }     
      } 
} 
+0

非常感谢您的帮助! – denden

+0

@denden不客气 – Blobonat

0

你可以使用OOP(面向对象编程),使其更容易在求解广义你的问题:

这里是我的样品溶液:

用户等级:

class User { 

private String username; 
private String password; 

public User(String username, String password) { 
    this.username = username; 
    this.password = password; 
} 

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; 
} 

@Override 
public boolean equals(Object o) { 
    User user2 = (User) o; 
    if (this.username.equals(user2.getUsername()) && this.password.equals(user2.getPassword())) 
     return true; 

    return false; 
} 

}

登录类:

public class Login { 


private User[] users = new User[]{ 
     new User("carl", "0001"), 
     new User("may", "0002"), 
     new User("joseph", "0003"), 
     new User("oliver", "0004"), 
     new User("ashley", "0005"), 
}; 


public static void main(String args[]) throws IOException { 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 

    System.out.print("\nUSERNAME: "); 
    String uname = br.readLine(); 
    System.out.print("PASSWORD: "); 
    String pword = br.readLine(); 


    boolean success = new Login().login(new User(uname, pword)); 
    if (success) 
     System.out.println("The user account is valid, login"); 
    else 
     System.out.println("The username and/or password is invalid."); 


} 

public boolean login(User user) { 
    for (int i = 0; i < users.length; i++) { 
     if (users[i].equals(user)) 
      return true; 
    } 

    return false; 
} 

}

+0

非常感谢您的帮助! – denden