如何验证两个值分别存在于两个同长度ArrayList的同一索引位置
解决思路与代码实现
嘿,我来帮你搞定这个验证手机号和对应PIN码的问题!你的需求很明确:检查指定手机号是否在phNumbers里,存在的话拿它的索引,再验证pinNumbers对应位置的PIN码是否匹配对吧?先说说你那段代码的问题,再给你两种靠谱的实现方式。
原代码的问题
你写的index1 = phNumbers.indexOf(i)完全搞错了逻辑——indexOf()的参数应该是你要找的目标手机号,而不是循环变量i,这会导致你根本找不到正确的索引。另外代码也没写完,逻辑不完整。
实现方式一:用indexOf快速定位(简洁版)
这种方式适合只需要验证匹配的场景,代码更简洁:
// 定义你要验证的目标手机号和PIN码 String targetPhone = "13800138000"; String targetPin = "1234"; // 获取目标手机号在phNumbers中的索引 int phoneIndex = phNumbers.indexOf(targetPhone); boolean isMatch = false; // 先判断手机号是否存在,再检查对应PIN码 if (phoneIndex != -1) { // 题目说两个集合元素数量相同,这里可以直接用索引取PIN码 isMatch = targetPin.equals(pinNumbers.get(phoneIndex)); } // 输出验证结果 if (isMatch) { System.out.println("手机号与PIN码匹配成功!"); } else { System.out.println("手机号不存在或PIN码不匹配!"); }
实现方式二:循环遍历(适合需额外处理的场景)
如果你需要在遍历过程中做其他操作(比如记录日志、处理异常),可以用循环遍历的方式:
String targetPhone = "13800138000"; String targetPin = "1234"; boolean isMatch = false; // 遍历集合(因两个集合元素数量相同,直接遍历phNumbers的长度即可) for (int i = 0; i < phNumbers.size(); i++) { // 找到目标手机号 if (phNumbers.get(i).equals(targetPhone)) { // 验证对应位置的PIN码 if (pinNumbers.get(i).equals(targetPin)) { isMatch = true; } // 找到后直接跳出循环,避免无效遍历 break; } } // 结果处理 System.out.println(isMatch ? "匹配成功" : "匹配失败");
关键注意点
- 用
equals()比较字符串内容:如果你存的手机号和PIN是字符串类型,一定要用equals()而不是==——==比较的是对象引用,不是实际内容。 - 处理索引不存在的情况:
indexOf()返回-1时,说明目标手机号不在集合里,直接判定不匹配。 - 安全性:虽然题目说两个集合元素数量相同,但实际开发中可以加上
phoneIndex < pinNumbers.size()的判断,防止意外越界。
内容的提问来源于stack exchange,提问作者Bl3akMirai
相关产品推荐
相关产品推荐

