• System.out.format的使用



       

    import java.util.Calendar;
    import java.util.Locale;
    public class TestFormat {
        
        public static void main(String[] args) {
          long n = 461012;
          System.out.format("%d%n", n);                  //  -->  "461012"
          System.out.format("%08d%n", n);                //  -->  "00461012"
          System.out.format("%+8d%n", n);                //  -->  " +461012"
          System.out.format("%,8d%n", n);                //  -->  " 461,012"
          System.out.format("%+,8d%n%n", n);             //  -->  "+461,012"
          
          double pi = Math.PI;
          System.out.format("%f%n", pi);                 //  -->  "3.141593"
          System.out.format("%.3f%n", pi);               //  -->  "3.142"
          System.out.format("%10.3f%n", pi);             //  -->  "     3.142"
          System.out.format("%-10.3f%n", pi);            //  -->  "3.142"
          System.out.format(Locale.FRANCE,
                            "%-10.4f%n%n", pi);          //  -->  "3,1416"
          Calendar c = Calendar.getInstance();
          System.out.format("%tB %te, %tY%n", c, c, c);  //  -->  "May 29, 2006"
          System.out.format("%tl:%tM %tp%n", c, c, c);   //  -->  "2:34 am"
          System.out.format("%tD%n", c);                 //  -->  "05/29/06"
        }
    }
     
     
    ====================
    import java.text.*;
    public class DecimalFormatDemo {
       static public void customFormat(String pattern, double value ) {
          DecimalFormat myFormatter = new DecimalFormat(pattern);
          String output = myFormatter.format(value);
          System.out.println(value + "  " + pattern + "  " + output);
       }
     
       static public void main(String[] args) {
          customFormat("###,###.###", 123456.789);
          customFormat("###.##", 123456.789);
          customFormat("000000.000", 123.78);
          customFormat("$###,###.###", 12345.67); 
       }
    }
     


    The output is:
     
    123456.789  ###,###.###  123,456.789
    123456.789  ###.##  123456.79
    123.78  000000.000  000123.780
    12345.67  $###,###.###  $12,345.67
    Converters and Flags Used in TestFormat.java(只是例子中用到的,还有没有用到的)

    Converter

    Flag Explanation
    d   A decimal integer.
    f   A float.
    n   A new line character appropriate to the platform running the application. You should always use %n, rather than  .
    tB   A date & time conversion—locale-specific full name of month.
    td, te   A date & time conversion—2-digit day of month. td has leading zeroes as needed, te does not.
    ty, tY   A date & time conversion—ty = 2-digit year, tY = 4-digit year.
    tl   A date & time conversion—hour in 12-hour clock.
    tM   A date & time conversion—minutes in 2 digits, with leading zeroes as necessary.
    tp   A date & time conversion—locale-specific am/pm (lower case).
    tm   A date & time conversion—months in 2 digits, with leading zeroes as necessary.
    tD   A date & time conversion—date as %tm%td%ty
      08 Eight characters in width, with leading zeroes as necessary.
      + Includes sign, whether positive or negative.
      , Includes locale-specific grouping characters.
      - Left-justified..
      .3 Three places after decimal point.
      10.3 Ten characters in width, right justified, with three places after decimal point.



    JDK5.0允许象C语言那样直接用printf()方法来格式化输出,并且提供了许多参数来格式化输入,调用也很简单:

    System.out.format("Pi is approximately  %f", Math.Pi);

       System.out.printf("Pi is approximately  %f", Math.Pi);

     printf()和 format() 方法具有相同的功能. System.out 是 Java.io.PrintStream的实例PrintStreamjava.io.PrintWriter, 和 java.lang.String 每个类都有四个新的格式化方法:

    format( String format, Object... args);

    printf( String format, Object... args);

    format( Locale locale, String format, Object... args);

    printf( Locale locale, String format, Object... args);

     

    同时,以前的formatter类也提供了更完善的方法来格式化,例如:

    formatter.format("Pi is approximately %1$f," +

            "and e is about %2$f", Math.PI, Math.E);

     

    格式化元素的构成如下:

    %[argument_index$][flags][width][.precision]conversion

    其中:

    argument_index是一个正整数,说明了参数的位置,1为取第一个参数

    width表示输出的最小字母个数

    precision代表数字的小数位数

    conversion代表被格式化的参数的类型:

    f  float,

    t  time

    d  decimal

    o octal

    x  hexadecimal

    s  general

    c  a Unicode character

    以下是个例子:

    package format;

     

       import java.util.Formatter;

     

       public class UsingFormatter {

     

         public static void main(String[] args) {

           if (args.length != 1) {

             System.err.println("usage: " +

               "Java format/UsingFormatter ");

             System.exit(0);

           }

           String format = args[0];

     

           StringBuilder stringBuilder = new StringBuilder();

           Formatter formatter = new Formatter(stringBuilder);

           formatter.format("Pi is approximately " + format +

             ", and e is about " + format, Math.PI, Math.E);

           System.out.println(stringBuilder);

         }

       }

     

    //控制台调用

    java format/UsingFormatter %f

    //输出

    Pi is approximately 3.141593, and e is about 2.718282

    //控制台调用

    java format/UsingFormatter %.2f

    //输出

    Pi is approximately 3.14, and e is about 2.72

    //控制台调用

    java format/UsingFormatter %6.2f

    //输出(有空格来填补长度)

    Pi is approximately   3.14, and e is about   2.72

    //控制台调用

    java format/UsingFormatter  %1$.2f

    //输出

    Pi is approximately 3.14, and e is about 3.14

     

    //改变区域设置

    package format;

     

       import java.util.Formatter;

       import java.util.Locale;

     

       public class UsingFormatter {

     

         public static void main(String[] args) {

           if (args.length != 1) {

             System.err.println("usage: " +

               "java format/UsingFormatter <format string>");

             System.exit(0);

           }

           String format = args[0];

     

           StringBuilder stringBuilder = new StringBuilder();

           Formatter formatter = new Formatter(stringBuilder,

                                       Locale.FRANCE);

           formatter.format("Pi is approximately " + format +

             ", and e is about " + format, Math.PI, Math.E);

           System.out.println(stringBuilder);

         }

       }

    //控制台调用

    java format/UsingFormatter %.2f

    //输出

    Pi is approximately 3,14, and e is about 2,72

     

    //采用format,printf的可替代写法

    package format;

     

       public class UsingSystemOut {

     

         public static void main(String[] args) {

           if (args.length != 1) {

             System.err.println("usage: " +

               "java format/UsingSystemOut <format string>");

             System.exit(0);

           }

           String format = args[0];

     

           System.out.format("Pi is approximately " + format +

             ", and e is approximately " + format, Math.PI, Math.E);

         }

       }

    //控制台调用

    java format/UsingSystemOut %.2f%n

    //输出

    Pi is approximately 3.14

       , and e is about 2.72

     

    对时间的格式化用字母t来代表,通常在t后面加上特殊的字符来显示时间的某个部分:

    tr  hour and minute,

    tA  the day of the week

    tB  the name of the month

    te  the number of the day of the month

    tY  the year

    //eg.

    package format;

     

       import java.util.Calendar;

     

       public class FormattingDates  {

     

         public static void main(String[] args) {

           System.out.printf("Right now it is %tr on " +

                             "%<tA, %<tB %<te, %<tY.%n",

                             Calendar.getInstance());

         }

       }

    //说明:“<”指示采用的参数为前一个被格式化的参数

    //输出

    Right now it is 01:55:19 PM on Wednesday, September 22, 2004.

  • 相关阅读:
    Boost.Asio c++ 网络编程翻译(10)
    建站手册:网站品质
    建站手册-template
    CDN:分类
    CDN:BootCDN 项目列表-摘录-20180405
    CDN:BootCDN
    CDN:目录
    CDN-template
    JavaScript-Tool:md5.js
    Regexp-Utils:基本
  • 原文地址:https://www.cnblogs.com/xzz-ymh/p/7452874.html
Copyright © 2020-2023  润新知