2017-06-17 280 views
-2

我真的很新的Java。我有一個任務,包括3個用戶的登錄系統。我的問題是程序不斷循環。我錯過了什麼?謝謝。在java中使用用戶名和密碼登錄系統

這是我的代碼:

import java.util.Scanner; 

public class Project { 
public static void main(String[]args) { 
    Scanner input = new Scanner(System.in); 

    String entryUsername; 
    String username1 = "mimi"; 
    String username2 = "nurul"; 
    String username3 = "yaya"; 

    int entryPassword; 
    int password1 = 7104; 
    int password2 = 7116; 
    int password3 = 7020; 

    System.out.println("Enter Username: "); 
    entryUsername = input.next(); 

    System.out.println("Enter Password: "); 
    entryPassword = input.nextInt(); 

    while (!(entryUsername.equals(username1)) || ! 
      (entryUsername.equals(username2)) || ! 
      (entryUsername.equals(username3)) 
      && (entryPassword == password1) || (entryPassword == password2) || (entryPassword == password3)) { 
     System.out.println("Incorrect Username or Password"); 
     System.out.println("Enter Username: "); 
     entryUsername = input.next(); 

     System.out.println("Enter Password: "); 
     entryPassword = input.nextInt(); 
    } 

    System.out.println("Logged In"); 
} 
} 
+1

你的問題不清楚。你不會說你的程序在循環。它表明你沒有投入足夠的精力去調試它。如果你想成爲一名優秀的程序員,你需要學習調試你的代碼。本網站不是邏輯和調試技能的替代品。此外,更具體的問題是您在這裏得到答案的可能性更高。 – Mustafa

回答

1

while循環應該是這樣的1對username和字符串類型的password

while (!(inputUsername.equals(username1) && 
      inputPassword.equals(password1))) 
{ 
    // Again ask for username and password here... 
} 

但是,這會很快成爲累贅手動編寫很多這樣的條件。使用這樣的while根本不是一個好主意。它很快就會變得麻煩。或者,您可以擁有用戶名和密碼數組,並使用它進行驗證。像這樣的東西(僞代碼 - 種):

boolean isValidated = false; 

while (!isValidated) 
{ 
    for (int i = 0; i < NUM_OF_USERS; ++i) 
    { 
     if (inputUsername.equals(arrayUsernames[i]) && 
      inputPassword.equals(arrayPasswords[i])) 
     { 
      isValidated = true; 
      break; 
     } 

     // Again ask for username and password 
    } 
} 

它會更加靈活和可擴展的方式。 您可以使用您選擇的任何其他數據結構進行順序驗證。

相關問題