2017-03-10 236 views
-2

我想爲某個用戶使用一個特定的密碼登錄多個用戶。我知道String user = new String("User")擁有用戶登錄名,但我希望能夠添加多個名稱和密碼。我也想知道它是否可能只有特定的用戶才能使用某些密碼。多登錄用戶和密碼Java

P.S.我也是初學者,請在我身上輕鬆點。

import java.io.*; 

public class Login { 
    public static void main(String[] args) throws IOException { 

     String greeting = "Hello"; 
     String username; 
     String password; 
     String user = new String("User"); 
     String pass = new String("Password"); 


     BufferedReader br = new BufferedReader(
      new InputStreamReader(System.in)); 

     System.out.println("*** Welcome to the program ***\n"); 
     System.out.println(greeting); 

     System.out.println("Please type your username :"); 
     username = br.readLine(); 
     System.out.println("Please type your password :"); 
     password = br.readLine(); 


     if (username.equals(user)) 
      System.out.println("They are the same"); 
     else 
      System.out.println("That is wrong"); 

     System.exit(0); 

     if (password.equals(pass)) 
      System.out.println("They are the same"); 
     else 
      System.out.println("That is wrong"); 
     System.exit(0);     
    } 
} 
+2

假設這是作業作業,請使用地圖。假設這是一個真正的安全系統,請使用數據庫並加密密碼。 – Compass

+0

你的問題是什麼? –

+0

我希望能夠使用多個用戶和密碼。 –

回答

1

您需要的是您可以遍歷並查找匹配的用戶列表。每個用戶都有一個用戶名和密碼。我們將創建一個用戶名爲新類,把在它自己的文件User.java:

public class User { 
    private String username; 
    private String password; 

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

    String getUsername() {return username;} 
    String getPassword() {return password;} 

}

現在,回到你寫的代碼,下面創建這些用戶的列表,添加了幾個虛擬用戶,然後遍歷該列表尋找匹配。這應該讓你在路上。

import java.io.*; 
import java.util.ArrayList; 
import java.util.List; 

public class JavaTest { 

    public static void main(String[] args) throws IOException 
    { 
     String greeting = "Hello"; 
     String username; 
     String password; 

     // Used to hold the instance of a user who successfully logged in 
     User loggedInUser = null; 

     // Create an empty list to hold users 
     List<User> listOfUsers = new ArrayList<>(); 

     // Add 3 users to the list 
     listOfUsers.add(new User("user1","password1")); 
     listOfUsers.add(new User("user2","password2")); 
     listOfUsers.add(new User("user3","password3")); 

     // Get user input 
     BufferedReader br = new BufferedReader(
      new InputStreamReader(System.in)); 

     System.out.println("*** Welcome to the program ***\n"); 
     System.out.println(greeting); 

     System.out.println("Please type your username :"); 
     username = br.readLine(); 
     System.out.println("Please type your password :"); 
     password = br.readLine(); 

     // Iterate through list of users to see if we have a match 
     for (User user : listOfUsers) 
     { 
      if (user.getUsername().equals(username)) 
      { 
       if (user.getPassword().equals(password)) 
       { 
        loggedInUser = user; 

        // when a user is found, "break" stops iterating through the list 
        break; 
       } 
      } 
     } 

     // if loggedInUser was changed from null, it was successful 
     if (loggedInUser != null) 
     { 
      System.out.println("User successfully logged in: "+loggedInUser.GetUsername()); 
     } 
     else 
     { 
      System.out.println("Invalid username/password combination"); 
     } 
    } 
} 
+0

請尊重基本的Java約定。方法以小寫字母開頭。字段通常在類的頂部聲明,而不是在最後。如果這個問題得到解決,我會提高你的答案。 –

+0

Doh,我最終會搖動命名約定的習慣,不知道爲什麼我將這些領域懸在那裏:) –

+0

非常感謝你的幫助! –

-2

您可以使用兩個字符串數組,一個用於用戶名,另一個用於用戶密碼。而不是if,您可以使用switch n case

0

由於Compass說你可以使用地圖。

private static Map<String,String> passwdMap = new LinkedHashMap<>(); 
    static { 
     passwdMap.put("kmick", "somepass123"); 
     passwdMap.put("gjames", "q8secret"); 
    } 
    public boolean check(String user, String password){ 
     return password != null && user!=null && password.equals(passwdMap.get(user)); 
    } 

然後,個人建議:圓括號防守,嘗試使用

if(condition){ 
    action(); 
} 

代替

if(condition) 
    action() 

因爲它很容易犯錯誤更新代碼之後。

+0

'passwd.equals(passwd.get(user));':這是不正確的。如果你選擇了一個好名字,比如passwordMap而不是passwd,你就不會犯這個錯誤。 –

+1

@JBNizet,哎呀,你是對的,你總是會學習,特別是當你嘗試技術... – minus