📜  用Java格式化输出

📅  最后修改于: 2021-06-26 10:14:41             🧑  作者: Mango

有时在竞争性编程中,必须以给定的指定格式打印输出。大多数用户都熟悉C语言中的printf函数。让我们看看讨论如何用Java格式化输出:

使用System.out.printf()格式化输出

这是所有方法中最简单的方法,因为它类似于C中的printf。请注意,System.out.print()和System.out.println()接受单个参数,但是printf()可以接受多个参数。

// A Java program to demonstrate working of printf() in Java
class JavaFormatter1
{
  public static void main(String args[])
  {
    int x = 100;
    System.out.printf("Printing simple integer: x = %d\n", x);
  
    // this will print it upto 2 decimal places
    System.out.printf("Formatted with precison: PI = %.2f\n", Math.PI);
  
    float n = 5.2f;
  
    // automatically appends zero to the rightmost part of decimal
    System.out.printf("Formatted to specific width: n = %.4f\n", n);
  
    n = 2324435.3f;
  
    // here number is formatted from right margin and occupies a
    // width of 20 characters
    System.out.printf("Formatted to right margin: n = %20.4f\n", n);
  }
}
输出:
Printing simple integer: x = 100
Formatted with precison: PI = 3.14
Formatted to specific width: n = 5.2000
Formatted to right margin: n =         2324435.2500

System.out.format()等同于printf(),也可以使用。

使用DecimalFormat类进行格式化:

DecimalFormat用于格式化十进制数字。

// Java program to demonstrate working of DecimalFormat
import java.text.DecimalFormat;
  
class JavaFormatter2
{
  public static void main(String args[])
  {
    double num = 123.4567;
  
    // prints only numeric part of a floating number
    DecimalFormat ft = new DecimalFormat("####");
    System.out.println("Without fraction part: num = " + ft.format(num));
  
    // this will print it upto 2 decimal places
    ft = new DecimalFormat("#.##");
    System.out.println("Formatted to Give precison: num = " + ft.format(num));
  
    // automatically appends zero to the rightmost part of decimal
    // instead of #,we use digit 0
    ft = new DecimalFormat("#.000000");
    System.out.println("appended zeroes to right: num = " + ft.format(num));
  
    // automatically appends zero to the leftmost of decimal number
    // instead of #,we use digit 0
    ft = new DecimalFormat("00000.00");
    System.out.println("formatting Numeric part : num = "+ft.format(num));
  
    // formatting money in dollars
    double income = 23456.789;
    ft = new DecimalFormat("$###,###.##");
    System.out.println("your Formatted Dream Income : " + ft.format(income));
  }
}
输出:
Without fraction part: num = 123
Formatted to Give precison: num = 123.46
appended zeroes to right: num = 123.456700
formatting Numeric part : num = 00123.46
your Formatted Dream Income : $23,456.79

使用SimpleDateFormat类格式化日期并进行解析:

此类存在于Java.text包中。

// Java program to demonstrate working of SimpleDateFormat
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
  
class Formatter3
{
  public static void main(String args[]) throws ParseException
  {
    // Formatting as per given pattern in the argument
    SimpleDateFormat ft = new SimpleDateFormat("dd-MM-yyyy");
    String str = ft.format(new Date());
    System.out.println("Formatted Date : " + str);
  
    // parsing a given String
    str = "02/18/1995";
    ft = new SimpleDateFormat("MM/dd/yyyy");
    Date date = ft.parse(str);
  
    // this will print the date as per parsed string
    System.out.println("Parsed Date : " + date);
  }
}
输出:
Formatted Date : 09-08-2018
Parsed Date : Sat Feb 18 00:00:00 UTC 1995

参考:
https://docs.oracle.com/ javase / tutorial / essential / io / formatting.html
https://docs.oracle.com/ javase / tutorial / Java/ data / numberformat.html
http://docs.oracle.com/javase/ 6 / docs / api / Java/ text / SimpleDateFormat.html

如果您希望与行业专家一起参加现场课程,请参阅《 Geeks现场课程》和《 Geeks现场课程美国》。