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
相关产品推荐
相关产品推荐

