如何在if-else语句中利用字符串数组校验输入的用户名是否合法
如何在if-else语句中利用字符串数组校验输入的用户名是否合法
嘿,我完全懂你的困扰!你现在想让输入的用户名和数组里所有的合法用户名比对,而不是只检查第一个元素对吧?不用挨个写一堆if判断,有几种简单又实用的方法可以实现这个需求,我给你详细说说:
方法一:用循环遍历数组(适合理解基础逻辑)
如果是刚学Java的话,用循环遍历数组是最直观的方式——我们逐个检查数组里的每个合法用户名,只要找到和输入匹配的,就标记为“合法”,然后跳出循环节省资源。
修改后的代码示例:
import java.util.Scanner; public class LoginChecker { public static void main(String[] args) { String[] validUsernames = {"JohnS", "SahilT", "VectorSingh"}; String inputUsername; Scanner sc = new Scanner(System.in); System.out.print("请输入用户名:"); inputUsername = sc.nextLine(); boolean isUsernameValid = false; // 增强for循环遍历所有合法用户名 for(String username : validUsernames) { if(inputUsername.equals(username)) { isUsernameValid = true; break; // 找到匹配项就停止循环,不用继续检查了 } } if(isUsernameValid) { System.out.println("You are welcome"); } else { System.out.println("You can't access"); } sc.close(); // 记得关闭Scanner哦 } }
方法二:用Arrays工具类(更简洁高效)
Java的java.util.Arrays类提供了很多方便的数组操作方法,我们可以用asList()把数组转换成List集合,然后直接用集合的contains()方法判断输入是否在合法列表里,一行代码就能完成判断,非常省事。
修改后的代码示例:
import java.util.Arrays; import java.util.Scanner; public class LoginChecker { public static void main(String[] args) { String[] validUsernames = {"JohnS", "SahilT", "VectorSingh"}; String inputUsername; Scanner sc = new Scanner(System.in); System.out.print("请输入用户名:"); inputUsername = sc.nextLine(); // 把数组转成List,直接用contains判断是否存在匹配项 if(Arrays.asList(validUsernames).contains(inputUsername)) { System.out.println("You are welcome"); } else { System.out.println("You can't access"); } sc.close(); } }
小提示
如果你的需求是忽略用户名的大小写(比如输入johns也能通过校验),可以把equals()换成equalsIgnoreCase(),比如:
inputUsername.equalsIgnoreCase(username)
备注:内容来源于stack exchange,提问作者Amey Kurade




