我是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");
}
}
答案 0 :(得分:1)
对于一对while
和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
}
}
这样会更加灵活和可扩展。 您可以使用您选择的任何其他数据结构进行顺序验证。