2013-11-21 7 views
-2

Я новичок в java, и я работаю над типичной программой блокнота, которая позволяет сохранять, редактировать, удалять и создавать заметки. Для приложения я пытаюсь добавить аутентификацию на мою страницу входа. У меня возникают проблемы с инициализацией UserList. Что я делаю неправильно? Уверен, это проблема синтаксиса, что я тоже не обращая внимания, чтобы увидеть прямо сейчасКак добавить аутентификацию в свой UserList?

UserList.java

import java.util.ArrayList; 
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

public class UserList { 

    //Declares 2 arraylists, one for the list of usernames and one for passwords 
    private ArrayList<String> validUsernames; 
    private ArrayList<String> validPasswords; 
    private UserList theUserList; 

    //Constructor that adds usernames and passwords to the arraylists 
    public UserList() { 

     validUsernames = new ArrayList(); 
     validPasswords = new ArrayList(); 

     validUsernames.add(""); 
     validUsernames.add(""); 
     validUsernames.add(""); 
     validUsernames.add(""); 
     validUsernames.add(""); 
     validPasswords.add(""); 
     validPasswords.add(""); 
     validPasswords.add(""); 
     validPasswords.add(""); 
     validPasswords.add(""); 
    } 

    //Returns arraylist of valid users 
    public ArrayList<String> getValidUsernames() { 
     return validUsernames; 
    } 

    //Returns arraylist of valid passwords 
    public ArrayList<String> getValidPasswords() { 
     return validPasswords; 
    } 
} 

LoginCntl (аутентификации) метод

public boolean authenticate(String username, String password){ 

     validUsernames = new ArrayList(); 
     **validUsernames = theUserList.getValidUsernames();** [line 42] 

     validPasswords = new ArrayList(); 
     validPasswords = theUserList.getValidPasswords(); 
     for (int i = 0; i < validUsernames.size(); i++) { 
      if (validUsernames.get(i).equals(username) && validPasswords.get(i).equals(password)) { 
       return true; 
      } 
     } 
     theLoginUI.password.setText(""); 
     JOptionPane.showMessageDialog(null, "alert", "alert", JOptionPane.ERROR_MESSAGE); 
     return false; 
    } 
+1

В чем проблема? Вы получили сообщение об ошибке? и если да, то какая это ошибка? – MAV

+0

Прежде всего, не знаете, почему вы добавляете «» в массивы. И если у вас есть проблемы, пожалуйста, будьте более конкретными и расскажите нам, что именно происходит, чтобы помочь вам. –

+0

Да я получаю сообщение об ошибке: Исключение в потоке "АВТ-EventQueue-0" java.lang.NullPointerException \t в swagpad.LoginCntl.authenticate (LoginCntl.java:42) \t в swagpad.LoginUI $ SubmitListener.actionPerformed (LoginUI .java: 72) –

ответ

1

You имеют NullPointerException по этой линии:

validUsernames = theUserList.getValidUsernames(); 

Единственная вещь, которая может вызвать NullPointerException на этой линии, равна theUserList. Убедитесь, что вы инициализируете theUserListдо, вы пытаетесь получить к нему доступ. В этом случае перед вызовом аутентификации. Например. вы можете инициализировать его, когда вы объявляете его, как это:

UserList theUserList = new UserList(); 

или же вы должны проверить нуль, прежде чем пытаться получить к нему доступ, и сделать что-то подходящее в этой ситуации. Например:

if(theUserList == null) { 
    // do something about it 
} 
validUsernames = new ArrayList(); 
validUsernames = theUserList.getValidUsernames(); 
... 
+0

спасибо, что это был хороший совет, я исправил проблему –

Смежные вопросы