System.out.printf("% - 15s%03d%n",s1,x)如何解释它

时间:2017-06-15 12:00:11

标签: java

在每行输出中应该有两列: 第一列包含String,并使用正好15个字符左对齐。 第二列包含整数,以3位数字表示;如果原始输入少于三位,则必须用零填充输出的前导数字。

有人可以解释System.out.printf("%-15s%03d%n", s1, x);

import java.util.Scanner;

public class Solution {

public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("================================");
        for(int i=0;i<3;i++)
        {
            String s1=sc.next();
            int x=sc.nextInt();
            System.out.printf("%-15s%03d%n", s1, x);
        }
        System.out.println("================================");

}

}

2 个答案:

答案 0 :(得分:5)

基本上每个%...都会被printf的一个参数所取代。 %符号之后是格式说明符。

%-15s

  • -表示:左对齐
  • 15表示:如果结果长度少于15个字符,请添加空格,直到长度为15个字符
  • s表示:将参数转换为toString的字符串并使用结果

%03d

  • 0表示:填充0而不是空格
  • 3表示:至少保持3个字符
  • d表示:参数为整数,将其格式化为基数为10的数字。

%n与* NIX上的\n或Windows上的\r\n相同。

您将在此处获得更多信息:https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax

根据{{​​3}}和AxelH

的评论

编辑

答案 1 :(得分:2)

其Java formatter syntax

上半场 - %-15s

  • % - 表示接下来是一个将被格式化的参数。
  • s - 表示您正在格式化字符串
  • 15 - 您在字符串中添加的字符数
  • 最后 - 意味着字符串将被左对齐

下半场 - %03d

  • d表示你将添加整数
  • 0表示您将在必要时添加0
  • 3表示您需要添加3位数

  • %n是System.line_separator - 基本上输出新行。它与/ n的作用相同,但%n可跨平台移植(信用卡@AxelH)