You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:45:45