2016-01-15 5 views
3

Я пытаюсь сделать систему входа в систему на данный момент, и мне нужна помощь по чтению объектов и их полей существующего arraylist в другом классе для аутентификации. Belowis кода конструктора объекта,Чтение arraylist Объекты и их поля в другом классе (java)

public class User { 
    public String UserName ; 
    public String UserSurname ; 
    public String UserUsername ; 
    public String UserPassword ; 
    public int UserType ; // 0 for cashier 
          // 1 for manager 

public User() {} 

public User(String UserName, String UserSurname, String UserUsername, String UserPassword, int UserType) { 
    this.UserName = UserName; 
    this.UserSurname = UserSurname; 
    this.UserUsername = UserUsername; 
    this.UserPassword = UserPassword; 
    this.UserType = UserType; 
} 
/* 
Getters and Setters 
*/ 

Вот мои «база данных» пользователей и Перечень материалов (Примечания -Ести конструктора для этого OBJ)

public class DataBase { 
    ArrayList<User> userlist; 
    ArrayList<Item> itemlist; 


    public DataBase(){ 
     User user1 = new User("example","example","example","example",1) ; 
     User user2 = new User("sda","fas","gdf","vcx",0) ; 
     User user3 = new User("htr","ytr","vxc","xaxxzx",0) ; 
     User user4 = new User("dag","gdf","dfgfgd","thrhf",0) ; 

     ArrayList<User> userlist = new ArrayList<User>(); 
     userlist.add(user1); 
     userlist.add(user2); 
     userlist.add(user3); 
     userlist.add(user4); 

     ArrayList<Item> itemlist = new ArrayList<Item>() {}; 
     Item item1 = new Item(1,"sadas",25.0) ; 
     Item item2 = new Item(1,"dcxz",25.0) ; 
     Item item3 = new Item(1,"czx",25.0) ; 
     Item item4 = new Item(1,"zxccxz",25.0) ; 
     Item item5 = new Item(1,"czx",25.0) ; 
     Item item6 = new Item(1,"tertgdf",25.0) ; 
     Item item7 = new Item(1,"zxcfes",25.0) ; 
     Item item8 = new Item(1,"erwt",25.0) ; 
     Item item9 = new Item(1,"gfdvcx",25.0) ; 
     Item item10 = new Item(1,"hjfgh",25.0) ; 
     itemlist.add(item1); 
     itemlist.add(item2); 
     itemlist.add(item3); 
     itemlist.add(item4); 
     itemlist.add(item5); 
     itemlist.add(item6); 
     itemlist.add(item7); 
     itemlist.add(item8); 
     itemlist.add(item9); 
     itemlist.add(item10); 
    } 

    public DataBase(ArrayList<User> userlist, ArrayList<Item> itemlist) { 
     this.userlist = userlist; 
     this.itemlist = itemlist; 
    } 
    public ArrayList<User> getUsers() { 
     return userlist; 
    } //end get Users 

    public ArrayList<Item> getItems(){ 
     return itemlist; 
    } //end get Items 
} // end class 

а вот что я сделали, чтобы читать из ArrayList я показал выше ..:

String username = UsernameField.getText(); 
     String pass = PasswordField.getText(); 

     try 
     { 

     users = new DataBase(); 
     ArrayList<User> userlist = users.getUsers();   
     for(User d : userlist){ 
     if(d.getUserUsername() != null && d.getUserUsername() == username && d.getUserPassword() != null && d.getUserPassword() == pass){ 
     Succed success = new Succed(); 
     success.setVisible(true); 
     } 
     else { 
      failure fail = new failure() ; 
      fail.setVisible(true); 
     } 
      }// end for 
     }/* end try */ catch (NullPointerException ex) { 
     } 

Я бы appriciate, если кто-то может помочь мне Solvet this.I've потратили много времени, пытаясь решить эту проблему.

Код Действие СЛУШАТЕЛЬ:

LoginButton.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      LoginButtonActionPerformed(evt); 
     } 
    }); 
+0

В качестве побочного я предлагаю использовать 'Enum' вместо' int', чтобы определить, является ли пользователь кассиром или менеджером. – SomeJavaGuy

+3

Возможный дубликат [Как сравнить строки в Java?] (Http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – SomeJavaGuy

+0

Когда вы заполняете два списка в _База данных_ ? – Berger

ответ

2

Никогда не следует сравнивать строки на равенство с использованием ==, а использовать .equals(). == сравнивает ссылки, а не содержимое строковых переменных. Для сравнения содержимого необходимо использовать .equals() или .equalsIgnoreCase().

Для справки см this

Update:

Прямо сейчас вы работаете петлю на списке пользователей и проверки, если введенный имя пользователя в списке. Вместо этого сделать это следующим образом:

Succed success = new Succed(); 
failure fail = new failure(); 

for(User d : userlist){ 
    if(d.getUserUsername().equals(username) && d.getUserPassword().equals(pass)){ 
     success.setVisible(true); 
     break; 
    } 
} 

if(!success.isVisible()){ 
    fail.setVisible(true); 
} 

предположения isVisible() определен на классе Succed которые возвращают true если успех является видимым и вернуть false в другом случае.

+0

Право на. В его случае что-то вроде этого: 'if (d.getUsername()! = Null && d.getUsername(). Equals (username) && d.getPassword()! = Null && d.getPassword(). Equals (pass)) '... – vikingsteve

+0

Просто 'if (username.equals (d.getUsername()) && pass.equals (d.getPassword()))' будет делать, поскольку метод '.equals()' неявно выполняет проверку не «null». –

+0

@ VamshiKrishnaAlladi Я изменил эту часть кода, но часть кода, когда я читал объекты DataBase, является частью кнопки прослушивателя действий (логин), и когда я нажимаю на нее, он ничего не делает ... может быть, код, когда я пытаюсь читать objecs неправильно? ... – HasS