创建 Java 嵌套的 FOR 循环和条件语句,而无需一遍又一遍地迭代



我创建了一个可以工作的登录程序。但是,我正在拔头发,试图将代码放入一个 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!" );

相关内容

最新更新