2017-03-10 6 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

あなたが必要とするのは、繰り返しを繰り返して一致するものを探しているユーザーのリストです。各ユーザーには、ユーザー名とパスワードが関連付けられています。 、

今、あなたが書いたコードに戻って、以下は、それらのユーザーのリストを作成し

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

}:私たちは、それ自身のファイルUser.javaに入れてユーザーと呼ばれる新しいクラスを作成します少数のダミーユーザーを追加してから、そのリストを繰り返して一致するものを探します。これはあなたの道にあなたを取得する必要があります。

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の慣習を尊重してください。メソッドは小文字で始まります。フィールドは通常、クラスの最後ではなく、クラスの先頭で宣言されます。これが修正された場合、私はあなたの答えをupvoteしたいと思います。 –

+0

Doh、結局のところ、命名規則の習慣を揺さぶって、どうしてそれらのフィールドがそこにぶら下がっているのか分からない:) –

+0

助けてくれてありがとう! –

-2

2つの文字列配列を使用できます.1つはユーザー名用、2つ目はユーザーパスワード用です。 ifの代わりにswitch n caseを使用できます。

0

コンパスはマップを使用できると述べました。

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));':それは間違っています。 passwdの代わりにpasswordMapのような良い名前を選んだら、間違いを犯さなかったでしょう。 –

+1

@JBNizet、あなたが正しいです、あなたは常に、特にあなたが技術を試すときに学びます... – minus

関連する問題