Java密码验证程序报“reached end of file while parsing”错误求助
嘿,我来帮你搞定这个问题!你遇到的reached end of file while parsing错误,说白了就是代码没写完——比如类、方法的大括号没闭合,或者语句写到一半就断了,编译器读到文件末尾还没找到结构结束的标记,就会抛出这个错误。我给你补上完整的可运行代码,再一步步解释要点:
问题原因分析
你的代码片段里String inpu...明显是未完成的语句,加上可能缺失了方法、类的闭合大括号,导致编译器无法正常解析整个文件,才会报这个错误。
完整修正代码
import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class PassChecker2 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String password; // 第一步:循环输入直到密码符合规则 do { System.out.println("请输入密码(要求:至少8位,包含1个大写字母、1个小写字母、1个数字):"); password = scanner.nextLine(); } while (!isValidPassword(password)); // 第二步:循环确认密码直到两次输入匹配 String confirmPassword; do { System.out.println("请再次输入密码以确认:"); confirmPassword = scanner.nextLine(); if (!password.equals(confirmPassword)) { System.out.println("两次输入的密码不匹配,请重新输入!"); } } while (!password.equals(confirmPassword)); System.out.println("密码设置成功!"); scanner.close(); } // 封装密码验证的工具方法 private static boolean isValidPassword(String password) { // 正则表达式:同时满足长度≥8、含大写、含小写、含数字 String regex = "^(?=.*[A-Z])(?=.*[a-z])(?=.*\\d).{8,}$"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(password); if (!matcher.matches()) { System.out.println("密码不符合要求!请确保:"); System.out.println("- 长度至少8位"); System.out.println("- 包含至少1个大写字母"); System.out.println("- 包含至少1个小写字母"); System.out.println("- 包含至少1个数字"); return false; } return true; } }
代码关键说明
- 用
do-while循环实现重复输入直到符合要求:不管是密码规则验证,还是密码确认匹配,都用循环处理错误输入的情况 isValidPassword方法用正则表达式做精准校验:(?=.*[A-Z]):确保字符串包含至少一个大写字母(?=.*[a-z]):确保字符串包含至少一个小写字母(?=.*\\d):确保字符串包含至少一个数字.{8,}:确保字符串长度至少8位
- 每次验证失败都会给出明确的提示信息,让用户清楚知道哪里错了
- 最后记得关闭
Scanner资源,避免资源泄漏
内容的提问来源于stack exchange,提问作者SamaliiiRose
相关产品推荐
相关产品推荐

