题目一

一、解题思路拆解

1. 需求拆解
  • 固定账号:正确登录名 shengya,密码 123456
  • 交互方式:控制台接收用户输入。
  • 次数限制:最多允许 3 次登录尝试,成功则终止程序,失败则提示剩余次数。
  • 成功反馈:登录成功后输出 “欢迎进入系统!”。
2. 步骤拆解
  1. 界面与输入
    • 打印登录提示,引导用户输入登录名和密码。
    • 使用 Scanner 类读取键盘输入的字符串。
  2. 认证方法设计
    • 定义一个 checkLogin(String username, String password) 方法,返回 boolean 类型。
    • 在方法内部,使用 String.equals() 比较输入内容与正确账号密码,返回验证结果。
  3. 循环控制逻辑
    • 使用 for 循环(或 while 循环)控制最多 3 次尝试。
    • 每次循环调用登录方法:
      • 若返回 true:输出欢迎信息,跳出循环,结束程序。
      • 若返回 false:计算剩余尝试次数并提示,继续循环。
    • 若 3 次均失败,输出锁定提示并结束程序。
  4. 边界处理
    • 防范空输入:在比较前判断输入是否为 null,避免空指针异常。
    • 次数统计:确保循环严格执行最多 3 次,不会无限尝试。

二、完整代码示例

package com.sy.demo;

import java.util.Scanner;

public class LoginDemo {
    public static void main(String[] args) {
        System.out.println("欢迎进入胜雅教育学生管理系统");
        // 开发一个循环登录三次的系统
        for (int i = 0; i < 3; i++) {
            // 1.让用户输入登录名 和 密码
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入登录名: ");
            String username = sc.next(); // 用户手动录入的用户名
            System.out.println("请输入密码: ");
            String password = sc.next(); // 用户手动录入的密码

            // 将用户输入的登录名 和 密码 做校验 判断是否正确  true/false
            boolean flag = login(username, password); //true/false
            if (flag){
                System.out.println("恭喜您  登录成功...");
                break;
            }else {
                System.out.println("登录名或者密码错误  请重新输入...");
            }
        }
    }

    // 判断登录是否正确
    public static boolean login(String username, String password){
        // 定义系统的登录名和密码
        String loginUsername = "liuyan";
        String loginPassword = "123456";
        if (loginUsername.equals(username) && loginPassword.equals(password)){
            // 如果校验正确 登陆成功
            return true;
        }else {
            // 如果校验失败  登录失败
            return false;
        }
    }
}

三、核心技术点总结

技术点 作用 关键代码示例
Scanner 输入 读取用户输入的登录名和密码 Scanner sc = new Scanner(System.in);
String.equals() 字符串内容比较(核心认证逻辑) "shengya".equals(username)
for/while 循环 控制最多 3 次登录尝试 for (int i=0; i<3; i++) { ... }
方法封装 分离登录验证逻辑,提高代码复用性 public static boolean checkLogin(...)
流程控制 根据认证结果决定程序走向 if (checkLogin(...)) { break; }

四、解题思路总结

  1. 先搭框架:确定程序结构(输入 → 验证 → 反馈 → 循环控制)。
  2. 再写核心:封装登录验证方法,专注实现账号密码的正确性判断。
  3. 后控流程:用循环管理尝试次数,根据验证结果分支处理(成功 / 失败 / 次数耗尽)。
  4. 最后优化:添加友好提示和异常处理,提升用户体验和代码健壮性。

题目二

一、解题思路拆解

1. 需求拆解
  • 字符范围:验证码每位字符可从 ** 数字(0-9)、大写字母(A-Z)、小写字母(a-z)** 中随机选取。
  • 功能要求:设计一个可复用的方法,接收 “验证码位数” 作为参数,返回对应长度的随机验证码字符串。
  • 输出形式:最终在控制台打印生成的验证码字符串。
2. 步骤拆解
  1. 方法设计

    • 定义一个方法 generateCaptcha(int length),参数 length 代表验证码位数,返回值为 String 类型。
    • 该方法封装了验证码生成的核心逻辑,方便在主方法或其他地方重复调用。
  2. 变量定义

    • 定义字符源字符串String chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";,包含所有可选字符。
    • 定义结果字符串String code = "";,用于拼接最终生成的验证码。
  3. 循环生成字符

    • 使用 for 循环,循环次数等于验证码位数 length
    • 每次循环中:
      1. 生成随机索引:通过 Random.nextInt(chars.length()) 获取一个 0 到字符源长度 - 1 的随机数。
      2. 提取字符:调用 chars.charAt(randomIndex) 从字符源中取出对应位置的字符。
      3. 拼接结果:将提取到的字符拼接到 code 字符串中。
  4. 返回结果

    • 循环结束后,将拼接完成的 code 字符串返回。
  5. 主方法调用

    • main 方法中创建 Random 对象,调用 generateCaptcha() 方法(如传入 6 生成 6 位验证码),并打印结果。

二、完整代码示例

package com.sy.demo;

import java.util.Random;

public class CodeDemo {
    public static void main(String[] args) {
        // 方法调用 返回的验证码
        System.out.println(createCode(4));
        System.out.println(createCode(6));
    }

    // 定义方法 设计一个生成验证码方法
    public static String createCode(int n){
        // 定义两个变量
        String code = ""; //记录生成的验证码
        String data = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

        //创建随机数对象
        Random random = new Random();
        // 随机生成n位的字符串
        for (int i = 0; i < n; i++) {
            // 生成的随机数必须是data变量的范围之内
            int index = random.nextInt(data.length()); // 随机得到的索引
            code += data.charAt(index); // code = code + b = b
        }
        return code;
    }
}

三、核心技术点总结

技术点 作用 关键代码示例
String.charAt(int index) 从字符串中提取指定索引位置的字符 chars.charAt(2)'2'
String 拼接 将多个字符连接成最终验证码 code += randomChar;
Random.nextInt(int bound) 生成 [0, bound) 范围内的随机整数 new Random().nextInt(chars.length())
方法封装 复用验证码生成逻辑,提高代码可维护性 public static String generateCaptcha(int length)

四、解题思路总结

  1. 明确范围:先确定所有可用字符集合,将其存入一个字符串作为 “字符池”。
  2. 随机抽取:通过随机数生成索引,从 “字符池” 中随机挑选字符,保证验证码的随机性。
  3. 循环拼接:利用循环控制验证码长度,将每次抽取的字符拼接成完整验证码。
  4. 封装复用:将生成逻辑封装为方法,实现 “一次编写,多次调用”,符合模块化开发思想。

一、核心知识点总览

知识模块 核心内容 对应题目
Scanner 控制台输入 获取用户键盘输入(字符串 / 整数) 两道题均涉及(登录输入、验证码长度输入)
String 类核心操作 内容比较 (equals)、字符提取 (charAt)、字符串拼接 登录验证、验证码生成
Random 随机数 生成随机索引 (nextInt),实现随机性 验证码生成
流程控制语句 for 循环(次数控制)、if-else 分支(结果判断) 登录三次机会、验证码循环生成
方法封装与调用 定义静态方法、方法参数 / 返回值、解耦设计 登录验证方法、验证码生成方法
异常与边界处理 字符串常量比较(防空指针)、循环次数控制 登录验证、验证码生成

二、综合案例融合(登录 + 验证码)

当两道题结合时,还考察了以下流程编排知识点

  1. 状态标记:使用 boolean isLoggedIn = false 标记登录状态。
    • 逻辑:登录成功后置为 true,仅当状态为 true 时才执行验证码生成逻辑,实现 “登录成功后才生成验证码” 的业务规则。
  2. 代码执行顺序
    • 主流程:输入 -> 登录验证(循环 3 次)-> 成功 -> 调用验证码方法 -> 输出结果。
    • 强调:方法调用的时机(只有登录成功后才调用 generateCaptcha)。

三、核心总结与易错点

1. 必背核心 API
方法名 作用 场景
scanner.nextLine() 获取用户输入的字符串 登录、验证码输入
str.equals(str2) 比较字符串内容 登录验证(最易错)
str.charAt(index) 获取指定索引的字符 验证码生成
random.nextInt(n) 生成 [0, n) 的随机整数 验证码随机索引
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐