Java/Development Class/printf

Материал из Java эксперт
Перейти к: навигация, поиск

Содержание

Align float numbers

   <source lang="java">

public class Main {

 public static void main(String[] argv) throws Exception {
   for (double i = 1.0; i < 20.0; i++)
     System.out.printf("%10.2f %10.2f %10.2f\n", i, Math.sqrt(i), i * i);
 }

} /* 1.00 1.00 1.00

     2.00       1.41       4.00
     3.00       1.73       9.00
     4.00       2.00      16.00
     5.00       2.24      25.00
     6.00       2.45      36.00
     7.00       2.65      49.00
     8.00       2.83      64.00
     9.00       3.00      81.00
    10.00       3.16     100.00
    11.00       3.32     121.00
    12.00       3.46     144.00
    13.00       3.61     169.00
    14.00       3.74     196.00
    15.00       3.87     225.00
    16.00       4.00     256.00
    17.00       4.12     289.00
    18.00       4.24     324.00
    19.00       4.36     361.00
  • /
 </source>
   
  
 
  



Align string output

   <source lang="java">

public class Main {

 public static void main(String[] argv) throws Exception {
   System.out.printf("%10s %10s %10s\n", "this", "is", "a test");
 }

}

 </source>
   
  
 
  



Basic Math with System.out.printf

   <source lang="java">

/*

* Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
*   - Redistributions of source code must retain the above copyright
*     notice, this list of conditions and the following disclaimer.
*
*   - Redistributions in binary form must reproduce the above copyright
*     notice, this list of conditions and the following disclaimer in the
*     documentation and/or other materials provided with the distribution.
*
*   - Neither the name of Sun Microsystems nor the names of its
*     contributors may be used to endorse or promote products derived
*     from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

public class BasicMathDemo {

 public static void main(String[] args) {
   double a = -191.635;
   double b = 43.74;
   int c = 16, d = 45;
   System.out.printf("The absolute value of %.3f is %.3f%n", a, Math.abs(a));
   System.out.printf("The ceiling of %.2f is %.0f%n", b, Math.ceil(b));
   System.out.printf("The floor of %.2f is %.0f%n", b, Math.floor(b));
   System.out.printf("The rint of %.2f is %.0f%n", b, Math.rint(b));
   System.out.printf("The max of %d and %d is %d%n", c, d, Math.max(c, d));
   System.out.printf("The min of of %d and %d is %d%n", c, d, Math.min(c, d));
 }

}

 </source>
   
  
 
  



"%d %(d %+d %05d

   <source lang="java">
 

public class MainClass{

 public static void main(String args[]) {
   System.out.printf("%d %(d %+d %05d\n", 3, -3, 3, 3);
 }

} //3 (3) +3 00003

 </source>
   
  
 
  



Default floating-point format: %f

   <source lang="java">
 

public class MainClass{

 public static void main(String args[]) {
   System.out.printf("Default floating-point format: %f\n", 1234567.123);
 }

} //Default floating-point format: 1234567.123000

 </source>
   
  
 
  



Display a file in hex.

   <source lang="java">

import java.io.FileInputStream; public class Main {

 public static void main(String[] argv) throws Exception {
   FileInputStream fin = new FileInputStream("test.txt");
   int i;
   do {
     i = fin.read();
     if (i != -1)
       System.out.printf("%02X ", i);
   } while (i != -1);
   fin.close();
 }

}

</source>
   
  
 
  



Display current time

   <source lang="java">

import java.util.Calendar; public class Main {

 public static void main(String[] argv) throws Exception {
   Calendar cal = Calendar.getInstance();
   System.out.printf("Current time and date: %tc\n", cal);
 }

}

 </source>
   
  
 
  



Display short and long date and time formats.

   <source lang="java">

import java.text.DateFormat; import java.util.Date; class DateFormatDemo {

 public static void main(String args[]) {
   Date date = new Date();
   DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
   System.out.println("Short form: " + df.format(date));
 }

}

 </source>
   
  
 
  



Floating-point with commas: %,f

   <source lang="java">
 

public class MainClass{

 public static void main(String args[]) {
   System.out.printf("Floating-point with commas: %,f\n", 1234567.123);
 }

} //Floating-point with commas: 1,234,567.123000

 </source>
   
  
 
  



give a known Locale (with the right decimal separator) to bypass the current Locale

   <source lang="java">

import java.util.Locale; public class Main {

 public static void main(String[] argv) {
   System.out.printf(Locale.UK, "%6.2f%n", 123456.7890);
 }

} //123456.79

 </source>
   
  
 
  



Group separators

   <source lang="java">

public class Main {

 public static void main(String[] argv) throws Exception {
   System.out.printf("group separators: %,.2f\n\n", 1546456.87);
 }

}

 </source>
   
  
 
  



Line up positive and negative values

   <source lang="java">
 

public class MainClass{

 public static void main(String args[]) {
   System.out.printf("Line up positive and negative values:\n");
   System.out.printf("% ,.2f\n% ,.2f\n", 1234567.123, -1234567.123);
 }

} //Line up positive and negative values: // 1,234,567.12 //-1,234,567.12

 </source>
   
  
 
  



Negative floating-point default: %,f

   <source lang="java">
 

public class MainClass{

 public static void main(String args[]) {
   System.out.printf("Negative floating-point default: %,f\n", -1234567.123);
 }

} //Negative floating-point default: -1,234,567.123000

 </source>
   
  
 
  



Negative floating-point option: %,(f

   <source lang="java">
 

public class MainClass{

 public static void main(String args[]) {
   System.out.printf("Negative floating-point option: %,(f\n", -1234567.123);
 }

} //Negative floating-point option: (1,234,567.123000)

 </source>
   
  
 
  



System.out.format("%f, %1$+020.10f %n", Math.PI)

   <source lang="java">

/*

* Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
*   - Redistributions of source code must retain the above copyright
*     notice, this list of conditions and the following disclaimer.
*
*   - Redistributions in binary form must reproduce the above copyright
*     notice, this list of conditions and the following disclaimer in the
*     documentation and/or other materials provided with the distribution.
*
*   - Neither the name of Sun Microsystems nor the names of its
*     contributors may be used to endorse or promote products derived
*     from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ 

public class Format {

   public static void main(String[] args) {
       System.out.format("%f, %1$+020.10f %n", Math.PI);
   }

} //3.141593, +00000003.1415926536

 </source>
   
  
 
  



System.out.printf( "%-10.10s %s\n", word, word.length() )

   <source lang="java">

public class PrintfExamples {

 public static void main(String[] args) {
   String [] words = new String [] { "a", "ape", "asdfasdfasdfasdfasdfasdfasdfadsfasdf" };
   System.out.printf( "%-10s %s\n", "Word", "Length" );
   for ( String word : words )
     System.out.printf( "%-10.10s %s\n", word, word.length() );
 }

} /* Word Length a 1 ape 3 asdfasdfas 36

  • /
 </source>
   
  
 
  



System.out.printf("1.0 4f num is %4f\n", 1.0 )

   <source lang="java">

public class PrintfExamples {

 public static void main(String[] args) {
   System.out.printf("1.0 5f num is %5f\n", 1.0 );
   System.out.printf("1.0 4f num is %4f\n", 1.0 );
 }

} /* 1.0 5f num is 1.000000 1.0 4f num is 1.000000

*/
  
 </source>
   
  
 
  



System.out.printf("%1$s://%2$s/%3$s\n", "http", "host", "path")

   <source lang="java">

public class PrintfExamples {

 public static void main(String[] args) {
   //http://host/path
   System.out.printf("%1$s://%2$s/%3$s\n", "http", "host", "path");
 }

} /* http://host/path

  • /
 </source>
   
  
 
  



System.out.printf("a %1$s is a %1$s is a %1$s...", "AAA")

   <source lang="java">

public class PrintfExamples {

 public static void main(String[] args) {
   System.out.printf("a %1$s is a %1$s is a %1$s...", "AAA");
   System.out.printf("bool is %b\n", "a");
   // char value is a
   System.out.printf("char value is %c\n", "a");
 }

} /*a AAA is a AAA is a AAA...bool is true char value is a

  • /
 </source>
   
  
 
  



System.out.printf("%b %n %c %n %s %n %s %n %d %n",..)

   <source lang="java">

/*

* Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
*   - Redistributions of source code must retain the above copyright
*     notice, this list of conditions and the following disclaimer.
*
*   - Redistributions in binary form must reproduce the above copyright
*     notice, this list of conditions and the following disclaimer in the
*     documentation and/or other materials provided with the distribution.
*
*   - Neither the name of Sun Microsystems nor the names of its
*     contributors may be used to endorse or promote products derived
*     from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

import java.io.IOException; public class PrintfStuff {

 public static void main(String[] args) throws IOException {
   char three[] = { "t", "h", "r", "e", "e" };
   System.out.printf("%b %n %c %n %s %n %s %n %d %n"
       + "%d %n %g %n %g %n %s %n", !false, "3", new String(three), "Three",
       3, Long.MAX_VALUE, Math.PI, Double.MAX_VALUE, new Object());
 }

} /*true

3 
three 
Three 
3 

9223372036854775807

3.14159 
1.79769e+308 
java.lang.Object@61de33 
  • /
 </source>
   
  
 
  



System.out.printf("boolean value is %1$b, %1$B\n", true )

   <source lang="java">

public class PrintfExamples {

 public static void main(String[] args) {
   //boolean value is true, TRUE
   System.out.printf("boolean value is %1$b, %1$B\n", true );
 }

} //boolean value is true, TRUE

 </source>
   
  
 
  



System.out.printf("float is %-20f!\n", 1.23456789)

   <source lang="java">

import java.util.Locale; public class PrintfExamples {

 public static void main(String[] args) {
   // flags
   System.out.printf("num is %d\n", 5000000);
   System.out.printf("float is %f\n", 1.23456789);
   System.out.printf("float is %.3f\n", 1.23456789);
   System.out.printf("float is %.1f\n", 1.23456789);
   System.out.printf("float is %.0f\n", 1.23456789);
   System.out.printf("float is %-20f!\n", 1.23456789);
 }

} /*num is 5000000 float is 1.234568 float is 1.235 float is 1.2 float is 1 float is 1.234568 */

 </source>
   
  
 
  



System.out.printf("hex value is %1$#x, %1$#X\n", 0xCAFE )

   <source lang="java">

import java.util.Date; public class PrintfExamples {

 public static void main(String[] args) {
   //hex value is b5151397, B5151397
   System.out.printf("hex value is %1$h, %1$H\n", new Date() );
   //hex value 
   System.out.printf("hex value is %1$h, %1$H\n", 0xCAFE );
   //hex value 
   System.out.printf("hex value is %1$x, %1$X\n", 0xCAFE );
   System.out.printf("hex value is %1$#x, %1$#X\n", 0xCAFE );
 }

} /*hex value is 5a341926, 5A341926 hex value is cafe, CAFE hex value is cafe, CAFE hex value is 0xcafe, 0XCAFE*/

 </source>
   
  
 
  



System.out.printf(Locale.CHINA, "The date is %tc\n", new Date())

   <source lang="java">

import java.util.Date; import java.util.Locale; public class PrintfExamples {

 public static void main(String[] args) {
   System.out.printf(Locale.ITALIAN, "The date is %tc\n", new Date());
   System.out.printf(Locale.CHINA, "The date is %tc\n", new Date());
   System.out.printf(Locale.FRENCH, "The date is %tc\n", new Date());
   System.out.printf(Locale.GERMAN, "The date is %tc\n", new Date());
 }

} /* The date is ven ott 31 16:28:06 PDT 2008 The date is ??? ?? 31 16:28:07 PDT 2008 The date is ven. oct. 31 16:28:08 PDT 2008 The date is Fr Okt 31 16:28:08 PDT 2008

*/
  
 </source>
   
  
 
  



System.out.printf( Locale.ITALIAN, "value: %f\n", 3.14 )

   <source lang="java">

import java.util.Locale; public class PrintfExamples {

 public static void main(String[] args) {
   System.out.printf( Locale.ITALIAN, "value: %f\n", 3.14 );
 }

} /*value: 3,140000*/

 </source>
   
  
 
  



System.out.printf("num is %03d\n", 5 )

   <source lang="java">

public class PrintfExamples {

 public static void main(String[] args) {
   System.out.printf("num is %03d\n", 5 );
 }

} /* num is 005

*/
  
 </source>
   
  
 
  



System.out.printf("num is {%07.3f}\n", 3.14 )

   <source lang="java">

public class PrintfExamples {

 public static void main(String[] args) {
   System.out.printf("num is %03f\n", 3.14159265 );
   System.out.printf("num is {%07.3f}\n", 3.14 );
   System.out.printf("06.3 num is %06.3f\n", 3.14159265 );
   System.out.printf(".3 num is %.3f\n", 3.14159265 );
   System.out.printf("9.99 num is %4.2f\n", 9.999999999 );
 }

} /* num is 3.141593 num is {003.140} 06.3 num is 03.142 .3 num is 3.142 9.99 num is 10.00

*/
  
 </source>
   
  
 
  



System.out.printf("num is %.2f\n", Math.PI )

   <source lang="java">

public class PrintfExamples {

 public static void main(String[] args) {
   // num is 3.141593
   System.out.printf("num is %f\n", Math.PI );
   // num is 3.14
   System.out.printf("num is %.2f\n", Math.PI );
 }

} /* num is 3.141593 num is 3.14

  • /
 </source>
   
  
 
  



System.out.printf("num is %s\n", 5)

   <source lang="java">

public class PrintfExamples {

 public static void main(String[] args) {
   System.out.printf("num is %s\n", 5);
   System.out.printf("char is %s\n", "a");
   System.out.printf("char is %S\n", "a");
   System.out.printf("bool is %s\n", true );
 }

} /* num is 5 char is a char is A bool is true

  • /
 </source>
   
  
 
  



System.out.printf("sci not num is %e\n", 3000000.0 )

   <source lang="java">

public class PrintfExamples {

 public static void main(String[] args) {
   System.out.printf("sci not num is %e\n", 3.14159265*10000 );
   System.out.printf("sci not num is %g\n", 3.14159265*10000 );
   System.out.printf("sci not num is %e\n", 0.123456789 );
   System.out.printf("sci not num is %g\n", 0.123456789 );
   System.out.printf("sci not num is %e\n", 3000000.0 );
   System.out.printf("hex num is %h\n", 1.0 );
   System.out.printf("num is %h\n", 0xCAFE );
 }

} /* sci not num is 3.141593e+04 sci not num is 31415.9 sci not num is 1.234568e-01 sci not num is 0.123457 sci not num is 3.000000e+06 hex num is 3ff00000 num is cafe

*/


  
 </source>
   
  
 
  



System.out.printf("%s://%s/%s\n", "http", "host", "path")

   <source lang="java">

public class PrintfExamples {

 public static void main(String[] args) {
   System.out.printf("My name is %s\n", "Joe");
   System.out.printf("%s://%s/%s\n", "http", "host", "path");
 }

} /* My name is Joe http://host/path

*/
  
 </source>
   
  
 
  



System.out.printf("String is "%-5s"\n", "A")

   <source lang="java">

public class PrintfExamples {

 public static void main(String[] args) {
   System.out.printf("String is "%5s"\n", "A");
   System.out.printf("String is "%-5s"\n", "A");
   System.out.printf("String is "%.5s"\n", "Happy Birthday!");
 }

} /* String is " A" String is "A " String is "Happy"

  • /
 </source>
   
  
 
  



System.out.printf("The DATE is %Tc\n", new Date() )

   <source lang="java">

import java.util.Date; import java.util.Locale; public class PrintfExamples {

 public static void main(String[] args) {
   System.out.printf("The date is %s\n", new Date() );
   System.out.printf("The date is %tc\n", new Date() );
   System.out.printf("The DATE is %Tc\n", new Date() );
 }

} /* The date is Fri Oct 31 16:30:25 PDT 2008 The date is Fri Oct 31 16:30:25 PDT 2008 The DATE is FRI OCT 31 16:30:25 PDT 2008

*/
  
 </source>
   
  
 
  



System.out.printf("The DATE is %tr\n", new Date() )

   <source lang="java">

import java.util.Date; import java.util.Locale; public class PrintfExamples {

 public static void main(String[] args) {
   System.out.printf("The DATE is %tD\n", new Date() );
   System.out.printf("The DATE is %tF\n", new Date() );
   System.out.printf("The DATE is %tr\n", new Date() );
   System.out.printf("The DATE is %tR\n", new Date());
   System.out.printf("The DATE is %tT\n", new Date());
 }

} /* The DATE is 10/31/08 The DATE is 2008-10-31 The DATE is 04:29:46 PM The DATE is 16:29 The DATE is 16:29:46

*/
  
 </source>
   
  
 
  



System.out.printf("The DATE is %tz\n", new Date() )

   <source lang="java">

import java.util.Date; public class PrintfExamples {

 public static void main(String[] args) {
   System.out.printf("The DATE is %tC\n", new Date() );
   System.out.printf("The DATE is %tz\n", new Date());
 }

} /* The DATE is 20 The DATE is -0800

  • /
 </source>
   
  
 
  



Two decimal digits

   <source lang="java">

public class Main {

 public static void main(String[] argv) throws Exception {
   System.out.printf("Two decimal digits: %.2f\n", 10.0 / 3.0);
 }

}

 </source>
   
  
 
  



Use printf(): %10s %10s %10s

   <source lang="java">

public class Main {

 public static void main(String[] argv) throws Exception {
   System.out.printf("%10s %10s %10s\n", "this", "is", "a test");
 }

} // this is a test

 </source>
   
  
 
  



Use printf(): align float numbers

   <source lang="java">

public class Main {

 public static void main(String[] argv) throws Exception {
   for (double i = 1.0; i < 20.0; i++)
     System.out.printf("%10.2f %10.2f %10.2f\n", i, Math.sqrt(i), i * i);
 }

} /* 1.00 1.00 1.00

     2.00       1.41       4.00
     3.00       1.73       9.00
     4.00       2.00      16.00
     5.00       2.24      25.00
     6.00       2.45      36.00
     7.00       2.65      49.00
     8.00       2.83      64.00
     9.00       3.00      81.00
    10.00       3.16     100.00
    11.00       3.32     121.00
    12.00       3.46     144.00
    13.00       3.61     169.00
    14.00       3.74     196.00
    15.00       3.87     225.00
    16.00       4.00     256.00
    17.00       4.12     289.00
    18.00       4.24     324.00
    19.00       4.36     361.00
  • /
 </source>
   
  
 
  



Use printf(): group separators

   <source lang="java">

public class Main {

 public static void main(String[] argv) throws Exception {
   System.out.printf("Use group separators: %,.2f\n\n", 123456.87);
 }

} //Use group separators: 123,456.87

 </source>
   
  
 
  



Use printf() to create a time stamp.

   <source lang="java">

import java.io.FileWriter; import java.io.PrintWriter; import java.util.Calendar; public class Main {

 static void timeStamp(String msg, PrintWriter pw) {
   Calendar cal = Calendar.getInstance();
   pw.printf("%s %tc\n", msg, cal);
 }
 public static void main(String args[]) throws Exception {
   PrintWriter pw = new PrintWriter(new FileWriter("logfile.txt", true));
   timeStamp("File opened", pw);
   pw.close();
   if (pw.checkError())
     System.out.println("I/O error occurred.");
 }

}

 </source>
   
  
 
  



Use printf(): Two decimal digits

   <source lang="java">

public class Main {

 public static void main(String[] argv) throws Exception {
   System.out.printf("Two decimal digits: %.2f\n", 10.0 / 3.0);
 }

} //Two decimal digits: 3.33

 </source>