使用用户名和密码

时间:2017-06-17 06:12:27

标签: java

我是java的新手。我有一个包含3个用户的登录系统的作业。我的问题是程序保持循环。我在哪里错过了?感谢。

这是我的代码:

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 个答案:

答案 0 :(得分:1)

对于一对whileusername字符串类型,您的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
    }
}

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