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

Java命令行参数处理:如何仅打印字符串中的姓名信息

解决方法

要从成对的姓名-年龄命令行参数里只打印姓名,关键是只处理每一对里的第一个元素——也就是索引为偶数的参数(从0开始计数)。我们可以通过调整循环的步长来实现:

修改后的代码

方式一:while循环实现

class CmdArgsNameAgePairs
{
    public static void main(String[] args)
    {
        int i = 0;
        // 每次跳过一个参数(年龄),步长设为2
        while (i < args.length) 
        {           
            System.out.print(args[i] + " ");
            i += 2;        
        }
        System.out.println();
    }
}

方式二:更简洁的for循环

class CmdArgsNameAgePairs
{
    public static void main(String[] args)
    {
        // 从索引0开始,每2个参数取一次
        for (int i = 0; i < args.length; i += 2) {
            System.out.print(args[i] + " ");
        }
        System.out.println();
    }
}

关键改动说明

  • 原代码里i++会逐个遍历所有参数,导致年龄也被打印;改成i += 2后,每次都会跳过紧随姓名后的年龄参数,只保留我们需要的姓名。
  • 如果想要每行输出一个姓名,把System.out.print(args[i] + " ")替换成System.out.println(args[i])就行。

优化:去掉末尾多余空格

上面的代码会在输出末尾多一个空格,如果想要完全匹配期望的输出格式,可以用StringBuilder来拼接:

class CmdArgsNameAgePairs
{
    public static void main(String[] args)
    {
        StringBuilder nameBuilder = new StringBuilder();
        for (int i = 0; i < args.length; i += 2) {
            if (i != 0) {
                nameBuilder.append(" ");
            }
            nameBuilder.append(args[i]);
        }
        System.out.println(nameBuilder.toString());
    }
}

运行时输入命令:java CmdArgsNameAgePairs Bill 32 Mary 42 Bob 29 Lisa 20,就能得到完美的输出:Bill Mary Bob Lisa。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 08:45:32