2016-04-02 5 views
0

値Iは、クラスのユーザーを定義しています私で定義されたクラスのリストで与えられた変数を持つ要素が存在する場合は検索すると、

公共の静的な無効:

public class User 
    { 
     public String id; 
     public String passWord; 

     public User(String id, String passWord) 
     { 
      this.id = id; 
      this.passWord = passWord; 
     } 
    } 

は、それから私は、ユーザーのリストを作成しました

012:メイン(文字列[]引数) {

List<User> users = new ArrayList<User>(); 
    users.add(new User("u1", "abc")); 
    users.add(new User("u2", "aaa")); 
    users.add(new User("u3", "bba")); 

は私が与えられたIDとパスワードを用いて、リスト内のユーザを検索します

Scanner input = new Scanner(System.in); 
System.out.print("User: "); 
String user = input.next(); 
System.out.print("Password: "); 
String pass = input.next(); 
int N = -1; 
for (int n = 0; n < medicos.size(); n++) 
{ 
    if (user.equals(users.get(n).id) && pass.equals(users.get(n).passWord)) 
     { 
      N = n; 
     } 
    } 

与えられたIDとパスワードを含むリストの要素を取得する簡単な方法がありますか?

+2

あなたはおそらく 'Map' /' HashMap'を使用することができます – 3kings

+0

変数名(Nではない)に小さな最初の文字を使用するという条約に従って、具体的には、2つの異なる変数にnとNを使用しないでください。誰かが間違いなく混乱させることもあります。 –

+0

'User'に' equals() 'をうまく実装すると、' users.contains(new User(user、pass)) 'を使うことができます。 –

答えて

2

HashMapを使用してください。必要に応じてArrayListUserを使用することもできますが、ユーザー名とパスワードをHashMapに追加することもできます(ユーザー名はキー、パスワードは値)。今変数pwordは(Scannerから入手した)「利用者」という名前のユーザーのパスワードが含まれてい

Map<String, String> users = new HashMap<>(); 
users.put("u1", "abc"); 
users.put("u2", "aaa"); 
users.put("u3", "bba"); 

Scanner input = new Scanner(System.in); 
System.out.print("User: "); 
String user = input.next(); 
System.out.print("Password: "); 
String pass = input.next(); 

String pword; 
if (users.containsKey(user)) { 
    pword = users.get(user); 
} 

:だから、例えば、あなたはこのような何かを行うことができます。

+0

ご協力ありがとうございます。実際にはもっと良い方法です。しかし、これは可能な限りリストを使うよう頼まれている練習の一部です – DDDD

+0

@DDDDその場合、リストを繰り返して、あなたと同じIDを持つ 'User' 'Scanner'から取得したユーザ名です。それはあなたが現在やっていることです。 – Josephus

関連する問題