我创建了一个可以工作的登录程序。但是,我正在拔头发,试图将代码放入一个 for 循环中,该循环将首先遍历用户名字符串。如果找到用户名,则程序应进入第二个 for 循环,然后遍历密码字符串。找到两者后,如果两个索引相同,程序应比较它们,以便接收登录消息。如果两者不匹配,则会抛出错误消息。
因为使用嵌套循环对我来说太难了,无法在不搞砸代码逻辑的情况下做到这一点,所以我继续分离代码,到目前为止它工作正常。
有人可以告诉我如何能够将这段代码("//在这里写你的代码")合并成更优雅的东西吗?
import java.util.Scanner;
class Challenge{
public static void main(String args[]){
Scanner i = new Scanner(System.in);
String user[] = new String[3] ;
String pass[] = new String[3] ;
user[0] = "John";
user[1] = "Bob" ;
user[2] = "ArnoldSchwarzenegger" ;
pass[0] = "123";
pass[1] = "456";
pass[2] = "theterminator" ;
System.out.println("Enter username:");
String username = i.next();
System.out.println("Enter pasword:");
String password = i.next();
///{ write you code here
int nameIndex = 0;
int copyK = 0;
String currentUser = "empty";
for(int j = 0; j < user.length; j++){
if( username.equals(user[j])) {
nameIndex = j;
currentUser = user[j];
}
}// end for loop
//Check Password
for(int k = 0; k < pass.length; k++){
if (password.equals(pass[k]) && nameIndex == k){
System.out.println("Hello " + currentUser+ "!" );
copyK = k;
}
} // end second for loop
if ( nameIndex != copyK){
System.out.println("Incorrect Login!");
}else{
System.out.println("Incorrect Login!");
}
///}
}
}
如果 user[]
和 pass[]
的长度始终相等,您可以尝试以下操作:
更新:这要简单得多:
String currentUser = "empty";
boolean login=false;
for(int j = 0; j < user.length; j++){
if( username.equals(user[j]) && password.equals(pass[j])){
currentUser = user[j];
login=true;
break;
}
}
if(login)
System.out.println("Hello " + currentUser+ "!" );
else
System.out.println("Incorrect Login!" );