使用printf的JAVA打印问题

使用printf的JAVA打印问题,java,Java,我在打印代码时遇到一些问题。我希望我的结果整齐地对齐,但不是那样的。如果有人能帮我解决这个问题,我将不胜感激 我的代码如下: public static void main(String[] args) { for(int j=1 ; j<=31;j++) { System.out.printf("%10d",j); if(j%7==0) { System.out.println(); } } }

我在打印代码时遇到一些问题。我希望我的结果整齐地对齐,但不是那样的。如果有人能帮我解决这个问题,我将不胜感激

我的代码如下:

public static void main(String[] args) {
    for(int j=1 ; j<=31;j++) {
        System.out.printf("%10d",j);
        if(j%7==0) {
            System.out.println();
        }

    }
}
publicstaticvoidmain(字符串[]args){
对于(int j=1;j根据

格式说明符以百分号(%)开头,以 转换器。转换器是一个字符,指示 要格式化的参数。介于百分号(%)和 转换器您可以有可选的标志和说明符

在这种情况下:

  • %
    是格式语法的必填前缀
  • -
    是左对齐的标志
  • 10
    表示宽度为10个字符,必要时带前导零
  • d
    ,一个十进制整数
  • 因此,您的主要方法应该是:

    public class Tst {
        public static void main (String[] args)
        {
            for(int j=1 ; j<=31;j++) {
                System.out.printf("%-10d",j);
                if(j%7==0) {
                    System.out.println();
                }
    
            }
        }
    }
    
    公共类Tst{
    公共静态void main(字符串[]args)
    {
    对于(int j=1;j根据

    格式说明符以百分号(%)开头,以 转换器。转换器是一个字符,指示 要格式化的参数。介于百分号(%)和 转换器您可以有可选的标志和说明符

    在这种情况下:

  • %
    是格式语法的必填前缀
  • -
    是左对齐的标志
  • 10
    表示宽度为10个字符,必要时带前导零
  • d
    ,一个十进制整数
  • 因此,您的主要方法应该是:

    public class Tst {
        public static void main (String[] args)
        {
            for(int j=1 ; j<=31;j++) {
                System.out.printf("%-10d",j);
                if(j%7==0) {
                    System.out.println();
                }
    
            }
        }
    }
    
    公共类Tst{
    公共静态void main(字符串[]args)
    {
    
    对于(int j=1;j您的代码是正确的。但是您应该在终端/控制台中使用单间距(固定宽度)字体,如Courier或Lucida Console:

    • 在操作系统终端中不使用等距字体
    • 或者在IDE的控制台中使用非等距字体
    • 或者,您将输出转发到您在某个编辑器中再次使用非等距字体查看的文件
    • 或者类似的非等距字体

    您的代码是正确的。但您应该在终端/控制台中使用Courier或Lucida Console等单间距(固定宽度)字体:

    • 在操作系统终端中不使用等距字体
    • 或者在IDE的控制台中使用非等距字体
    • 或者,您将输出转发到您在某个编辑器中再次使用非等距字体查看的文件
    • 或者类似的非等距字体

    try:System.out.printf(“%-10s”,j);@user202729我现在把它作为anwerFor OP发布了:如果你能多解释一下你的期望会更好。“整洁”是什么意思?@user202729整洁的意思accurately@Rcordoval(1)我告诉OP的不是你(2)这还不够精确。两个答案都假设OP希望输出左对齐,但如果OP希望输出右对齐/居中/其他对齐怎么办?不清楚。try:System.out.printf(“%-10s”,j)@user202729我现在把它作为一个答案发布了:如果你能多解释一下你的期望会更好。什么是“整洁”?@user202729整洁的意思accurately@Rcordoval(1)我告诉OP的不是你(2)这还不够精确。两个答案都假设OP希望输出左对齐,但如果OP希望输出右对齐/居中对齐/其他对齐怎么办?不清楚。谢谢你的帮助,但结果看起来与以前一样谢谢你的帮助,但结果看起来与以前一样使用固定宽度字体是正确的建议。但是,你是在混合薄字体在你的答案中,gs向上。True type指的是字体技术(字体格式)可用于固定宽度和可变宽度字体。MONOTYPE是一家提供字体和工具的公司。非常感谢你,我不太明白什么是MONOTYPE字体或true type,但更改字体解决了我的问题。@Henry:是的,我指的是单间距字体,而不是单字体:):)但你对TTF的看法是对的,我赞成你的意见:)使用固定宽度字体是正确的建议。但是,你在回答中弄混了东西。True type指的是字体技术(字体格式)可用于固定宽度和可变宽度字体。MONOTYPE是一家提供字体和工具的公司。非常感谢你,我不太明白什么是MONOTYPE字体或true type,但更改字体解决了我的问题。@Henry:是的,我指的是单间距字体,而不是单字体:):)但你对TTF的看法是对的,我赞成你的意见:)