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

Java密码生成程序:如何将输出行首字符与中间字符转数字追加到末尾?

解决方案

要实现这个需求,你需要先把当前分散打印的字符拼接成完整的初始密码字符串,再提取首字符和中间字符转换为数字求和,最后将结果追加到密码末尾。具体步骤和修改后的代码如下:

关键步骤说明

  1. 拼接初始密码:不再直接逐个打印字符,而是用StringBuilder把所有字符拼接成完整的初始密码字符串,方便后续操作。
  2. 字符转数字规则:
    • 小写字母按a=1, b=2...z=26转换
    • 数字字符直接转为对应数值(如'3'转3)
  3. 提取首字符与中间字符:首字符取字符串索引0的位置;中间字符取字符串长度的一半位置(如长度为7时取索引3,长度为6时取索引3)
  4. 求和并追加:计算两个字符对应数字的和,将结果追加到初始密码末尾,得到最终密码。

修改后的完整代码

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.println("This is a password generator that will take some information and create a password.");
        System.out.println("");
        System.out.println("In the following prompts please enter your information in all lowercase. Thanks!");
        System.out.println("");
        
        System.out.println("enter first name here: ");
        String fname = input.next();

        System.out.println("enter middle name here: ");
        String mname = input.next();

        System.out.println("Enter last name here: ");
        String lname = input.next();
        
        System.out.println("Enter birthday (MMDDYYYY) here: ");
        String age = input.next();
    
        char resultfn = fname.charAt(1);
        char resultage0 = age.charAt(2);
        char resultage1 = age.charAt(3);
        char resultmn = mname.charAt(1);

        fname = fname.substring(fname.length()-2);
        lname = lname.substring(lname.length()-3);
        char reversedfn = fname.charAt(0);

        // 1. 拼接初始密码
        StringBuilder passwordBuilder = new StringBuilder();
        passwordBuilder.append(resultfn);
        passwordBuilder.append(reversedfn);
        passwordBuilder.append(resultmn);
        passwordBuilder.append(resultage0);
        passwordBuilder.append(resultage1);
        passwordBuilder.append(lname);
        String initialPassword = passwordBuilder.toString();

        // 2. 转换首字符为数字
        int firstNum = charToNumber(initialPassword.charAt(0));

        // 3. 转换中间字符为数字
        int middleIndex = initialPassword.length() / 2;
        int middleNum = charToNumber(initialPassword.charAt(middleIndex));

        // 4. 计算求和并生成最终密码
        int sum = firstNum + middleNum;
        String finalPassword = initialPassword + sum;

        // 打印最终密码
        System.out.println(finalPassword);
    }

    // 辅助方法:将字符转换为对应数字
    private static int charToNumber(char c) {
        if (Character.isLowerCase(c)) {
            // 小写字母a-z对应1-26
            return c - 'a' + 1;
        } else if (Character.isDigit(c)) {
            // 数字字符转为对应数值
            return c - '0';
        }
        // 非预期字符返回0(可根据需求调整)
        return 0;
    }
}

代码说明

  • StringBuilder用于高效拼接字符,避免多次字符串拼接的性能损耗。
  • charToNumber方法统一处理字母和数字的转换逻辑,代码更清晰。
  • 中间字符的索引计算采用initialPassword.length() / 2,无论密码长度是奇数还是偶数,都能取到中间区域的字符,你也可以根据需求调整为(initialPassword.length()-1)/2来取更靠左的中间位置。

内容的提问来源于stack exchange,提问作者Aiden McCoy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 02:50:51