Java打印输出内容时如何去除开头的前导空格?
Java打印内容去除输出前导空格解决方案
问题原因
原代码中通过indexOf(" ")获取到的是姓名中间空格的下标,调用substring时直接从空格下标位置开始截取,就会把空格一并输出,导致最终结果两个首字母之间存在多余空格。
修复后代码
import java.util.Scanner; import java.io.IOException; public class InitialsProject { public static void main(String args[]) throws IOException { Scanner scan = new Scanner(System.in); System.out.print("Enter your name: "); String name = scan.nextLine(); char firstInitial = name.charAt(0); // 从空格的下一位开始截取,跳过空格 int index = name.indexOf(" "); System.out.println(firstInitial + name.substring(index+1,index+2)); } }
优化方案(适配多空格、输入前后带空格的场景)
如果要兼容输入姓名前后有空格、中间有多个连续空格的情况,可以用字符串拆分的方式实现,逻辑更健壮:
import java.util.Scanner; import java.io.IOException; public class InitialsProject { public static void main(String args[]) throws IOException { Scanner scan = new Scanner(System.in); System.out.print("Enter your name: "); // 先去除输入首尾空格,再按任意数量空格拆分 String[] nameParts = scan.nextLine().trim().split("\\s+"); char firstInitial = nameParts[0].charAt(0); char secondInitial = nameParts[1].charAt(0); System.out.println(firstInitial + "" + secondInitial); } }
效果验证
- 示例输入:John Doe
- 输出结果:JD
内容的提问来源于stack exchange,提问作者Sam Chauhan
相关产品推荐
相关产品推荐

