2017-06-17 212 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 
    } 
} 

它会更加灵活和可扩展的方式。 您可以使用您选择的任何其他数据结构进行顺序验证。

相关问题