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

Java首字母缩写(acronym)生成问题:过滤非单词首字母大写字符

解决首字母缩写提取错误的问题

你的代码目前的问题是把所有空格移除后,无法区分单词边界,导致单词内部的大写字母(比如COOL里的O、O、L)也被当作首字母提取了。正确的思路应该是按单词分割短语,只取每个单词的首字母。

修改方案

步骤说明

  1. 将输入短语按空格分割成单词数组(用split("\\s+")可以处理多个连续空格的情况)
  2. 遍历每个单词:
    • 跳过空字符串(处理首尾空格的情况)
    • 提取单词的第一个字符,转换为大写(确保即使单词首字母是小写也能正确提取)
    • 将该大写字符添加到缩写中
  3. 最后给缩写加上结尾的点,匹配你期望的输出格式

修改后的完整代码

import java.util.Scanner;

public class LabProgram {
   
   public static String createAcronym(String userPhrase) {
      // 按一个或多个空格分割成单词数组
      String[] words = userPhrase.split("\\s+");
      StringBuilder acronym = new StringBuilder();
      
      for (String word : words) {
         if (!word.isEmpty()) {
            // 取第一个字符并转大写
            char firstChar = Character.toUpperCase(word.charAt(0));
            acronym.append(firstChar);
         }
      }
      // 最后添加一个点,符合你期望的输出格式
      return acronym.append(".").toString();
   }
      
   public static void main(String[] args) {
      Scanner scnr = new Scanner(System.in);
      
      String userPhrase = scnr.nextLine();
      
      System.out.println(createAcronym(userPhrase));
   }
}

测试验证

输入Awesome COOL Crazy时,代码会:

  1. 分割得到["Awesome", "COOL", "Crazy"]三个单词
  2. 分别提取每个单词的首字母A、C、C
  3. 拼接后添加点,输出ACC.,完全符合你的期望。

另外这里用StringBuilder代替了字符串直接拼接,效率更高(Java中字符串是不可变对象,多次拼接会产生冗余对象),适合新手养成良好的编程习惯。

内容的提问来源于stack exchange,提问作者Amanda Brown

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 02:15:30