2016-08-11 5 views
0
class Test{ 
    public static void main(String args[]) 
    { 
     Patron list[] = new PatronData().getPatronData(); 

     /*for(Patron p: list) 
     { 
      System.out.println(p); 
     }*/ 
    } 
    } 


    class PatronData{ 
    //Patron patron[] = {new  Patron("Daniel","A001","15WAD00001","A4701,Jalan Kepong,  Pahang","JK01",0.00,"012-8765432"), 
    //    new Patron("Chiam","A002","15WAD00002","A4702,Jalan  Akar,Pahang","JK02",0.00,"0102288554")}; 
    Patron patron[] = new Patron[2]; 

    public Patron[] getPatronData() 
    { 
     patron[0] = new Patron("Daniel","A001","15WAD00001","A4701,Jalan  Kepong, Pahang","JK01",0.00,"012-8765432"); 
     patron[1] = new Patron("Chiam","A002","15WAD00002","A4702,Jalan  Akar,Pahang","JK02",0.00,"0102288554"); 
     return patron; 
    } 
} 

class Patron{ 
    private String userName; 
    private String password; 
    private String userCode; 
    private String streetAddress; 
    private String postCode; 
    private double overdueBalance; 
    private String phoneNumber; 

    Patron(String userName[], String password[], String userCode, 
    String streetAddress, String postCode, double overdueBalance, String  phoneNumber) 
    { 
     this.userName = userName; 
     this.password = password; 
     this.userCode = userCode; 
     this.streetAddress = streetAddress; 
     this.postCode = postCode; 
     this.overdueBalance = overdueBalance; 
     this.phoneNumber = phoneNumber; 

     int logNMatch = 0; 

     Scanner scan = new Scanner(System.in); 
     do{ 

      System.out.print("Please Enter Your User Name > "); 
      String inputUserName=scan.nextLine(); 
      System.out.println(); 
      System.out.print("Please Enter Your Password > "); 
      String inputPassword = scan.nextLine(); 

      if(userName.compareTo(inputUserName) == 0 &&  password.compareTo(inputPassword) == 0) 
      { 
       System.out.println("Logging Successful"); 
       System.out.print("\n\n"); 

      } 
      else 
      { 
       System.out.println("Loging fail"); 
       System.out.println("Please again later"); 
       logNMatch++; 
      } 
     }while(logNMatch > 0); 
    } 
    } 

Эй, ребята, я изучаю Java на Дипломном уровне. У меня есть вопрос. Пожалуйста, я понятия не имею, почему я не могу сразу войти в «учетную запись Chiam», я ожидал, когда при входе в систему компилятор будет автоматически проверять, совпадает ли соответствие логина с данными в библиотечной системе.Вход в систему Вход в систему

+0

Пожалуйста, вы можете уточнить свой вопрос? что такое логин и библиотека? И вы ожидали, что это произойдет - автоматически войдите в систему? – Arthur

+0

Проблемы есть ... Пример: сначала войдите в мою учетную запись «Daniel, A001» ... она работает, но не знаю, почему я закончил запись компилятора, попросив меня снова войти в систему. – NoName

+0

, когда я снова скомпилирую программу, я сразу же попробовал войти во вторую учетную запись «Chiam, A002», компилятор запросил сообщение «Logging fail» – NoName

ответ

1

Вы запрашиваете информацию для входа в конструктор. Это означает, что всякий раз, когда вы делаете новый Patron, он будет запрашивать логин с информацией этого пользователя.

Вместо этого удалите все внутри цикла do/while и добавьте метод, например loginFromLibrary(), который предложит пользователю ввести имя и пароль. Затем проверьте все Patron s, чтобы узнать, соответствуют ли их имена именам пользователей. Затем просто убедитесь, что имя пользователя соответствует паролю.

Этот пример потребует некоторого поглотитель (getPassword() и getUsername()):

public void loginFromLibrary(Patron[] patrons){ 
    Scanner scan = new Scanner(System.in); 
    while (true){ 
     // get usernmae 
     System.out.println("Username > "); 
     String username = scan.nextLine(); 
     Patron user = null; 
     // check array to see if username exists 
     for (Patron p : patrons){ 
      if (p.getUsername().equals(username)){ 
       user = p; 
       break; 
      } 
     } 
     if (user == null){ 
      // username not found 
      System.out.println("Username not found"); 
      continue; 
     } 
     // get password 
     System.out.println("Password > "); 
     String pass = scan.nextLine(); 
     // check password 
     if (pass.equals(user.getPassword())){ 
      // logged in 
      break; 
     } else { 
      // wrong password 
     } 
    } 
    scan.close(); 
} 
+0

Спасибо Артур: D – NoName

+0

@ DanielChoo np. Если бы это был правильный ответ, не забудьте отметить его так. – Arthur