LifeCommander 2023-05-22 21:21 采纳率: 80%
浏览 28
已结题

Java关于特殊字体打印对齐的问题

最近打Java的时候,发现printf("%-ms\t", str)失效了,花了一个小时用for循环补齐空格,也没用。发现是字体问题,切换到系统默认字体就行了。但我个人很喜欢像素字体,可是只要用了这个字体,打印就出问题。
有没有这一问题的解决方案?
还请热情提供帮助,谢谢!

  • 写回答

3条回答 默认 最新

  • Usinian 2023-05-22 21:49
    关注

    jiyugpt
    在使用特殊字体打印对齐时遇到问题可能是由于字体渲染的差异导致的。在某些字体中,字符的宽度可能会有所不同,这可能导致对齐问题。以下是一些解决方案,您可以尝试其中之一:

    使用等宽字体:确保您选择的字体是等宽字体,其中每个字符具有相同的宽度。等宽字体可以保证字符对齐。您可以尝试使用像 "Courier New"、"Consolas" 或 "Monospaced" 这样的等宽字体。

    使用空格填充字符串:如果您仍然遇到对齐问题,可以手动使用空格填充字符串来实现对齐效果。例如,您可以使用 String.format 方法来创建一个带有适当空格填充的格式化字符串,然后进行打印。例如:

    
    String str = "Hello";
    int totalWidth = 10;
    String paddedStr = String.format("%-" + totalWidth + "s", str);
    System.out.println(paddedStr);
    
    

    这将在字符串 "Hello" 后面添加适当数量的空格以达到总宽度为 10 的对齐效果。

    调整打印格式:根据您的需要,您可以尝试调整打印格式,例如使用固定的字段宽度,而不依赖于字体的渲染。您可以使用 System.out.format 或 System.out.printf 方法来指定固定的字段宽度,例如:

    String str = "Hello";
    int fieldWidth = 10;
    System.out.format("%-" + fieldWidth + "s", str);
    
    

    这将确保字符串 "Hello" 占据固定宽度为 10 的字段,而不受字体的影响。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月4日
  • 已采纳回答 5月27日
  • 创建了问题 5月22日

悬赏问题

  • ¥20 Keil uVision5创建project没反应
  • ¥15 mmseqs内存报错
  • ¥15 vika文档如何与obsidian同步
  • ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
  • ¥15 陆空双模式无人机飞控设置
  • ¥15 sentaurus lithography
  • ¥100 求抖音ck号 或者提ck教程
  • ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)
  • ¥20 web页面如何打开Outlook 365的全球离线通讯簿功能
  • ¥15 io.jsonwebtoken.security.Keys