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

Java程序如何识别空格提取姓名并分变量指定格式输出?

问题分析与解决方案

你的代码现在只输出名字的原因主要有两个:

  • scanner.next() 只会读取到第一个空格为止,所以你拿到的fullName其实只有输入的名(比如输入zayaan khan时,fullName就是zayaan),自然无法分割出姓。
  • 没有处理首字母大写的逻辑,也没有按要求的格式输出。

下面是修正后的完整代码,附详细说明:

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Input forename and surname on one line (space included)");
        
        // 读取整行输入,而非仅读到第一个空格
        String fullName = scanner.nextLine();
        
        // 按空白字符分割(支持单个/多个空格、制表符等,更鲁棒)
        String[] nameParts = fullName.split("\\s+");
        
        // 处理首字母大写:首字符转大写,剩余部分转小写
        String forename = capitalize(nameParts[0]);
        String surname = capitalize(nameParts[1]);
        
        // 按指定格式输出
        System.out.printf("Forename: %s Surname: %s%n", forename, surname);
        
        scanner.close();
    }
    
    // 封装首字母大写的工具方法,复用性更强
    private static String capitalize(String str) {
        if (str == null || str.isEmpty()) {
            return str;
        }
        return str.substring(0, 1).toUpperCase() + str.substring(1).toLowerCase();
    }
}

关键改动说明:

  • 替换scanner.next()为scanner.nextLine():nextLine()会读取用户输入的完整一行(包含空格),确保能获取到名和姓的全部内容。
  • 优化字符串分割逻辑:split("\\s+")可以匹配任意数量的空白字符,避免用户不小心输入多个空格导致的分割错误。
  • 首字母大写处理:通过工具方法统一处理格式,不管用户输入的是全小写、全大写还是混合格式,都能转换成规范的首字母大写形式。
  • 格式化输出:用System.out.printf实现指定格式的输出,代码更简洁易读。

测试输入zayaan khan,输出结果如下:

Forename: Zayaan Surname: Khan

完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 12:02:31