📜  用Java格式化输出

📅  最后修改于: 2020-03-24 13:26:51             🧑  作者: Mango

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

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

这是所有方法中最简单的方法,因为这与C语言中的printf相似。请注意,System.out.print()和System.out.println()带有单个参数,但是printf()可以带有多个参数。

// Java展示如何使用函数printf()
class JavaFormatter1
{
  public static void main(String args[])
  {
    int x = 100;
    System.out.printf("打印简单整数: x = %d\n", x);
    // 打印两位小数
    System.out.printf("格式化小数精度: PI = %.2f\n", Math.PI);
    float n = 5.2f;
    // 自动补零
    System.out.printf("格式化小数位: n = %.4f\n", n);
    n = 2324435.3f;
    // 格式化右边界
    System.out.printf("格式化右边界: n = %20.4f\n", n);
  }
}

输出:

打印简单整数: x = 100
格式化小数精度: PI = 3.14
格式化小数位: n = 5.2000
格式化右边界: n =         2324435.2500

System.out.format()等同于printf()。

使用DecimalFormat类进行格式化:

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

// Java展示如何使用DecimalFormat
import java.text.DecimalFormat;
class JavaFormatter2
{
  public static void main(String args[])
  {
    double num = 123.4567;
    // 只打印整数部分
    DecimalFormat ft = new DecimalFormat("####");
    System.out.println("整数部分: num = " + ft.format(num));
    // 打印两位小数
    ft = new DecimalFormat("#.##");
    System.out.println("打印两位小数: num = " + ft.format(num));
    // 自动在右边补全
    // 不使用#,而使用0
    ft = new DecimalFormat("#.000000");
    System.out.println("在右边补零: num = " + ft.format(num));
    // 自动在左边补全
    // 不使用#,而使用0
    ft = new DecimalFormat("00000.00");
    System.out.println("在左边补全 : num = "+ft.format(num));
    // 格式化美元输出
    double income = 23456.789;
    ft = new DecimalFormat("$###,###.##");
    System.out.println("您的梦想收入 : " + ft.format(income));
  }
}

输出:

整数部分: num = 123
打印两位小数: num = 123.46
在右边补零: num = 123.456700
在左边补全 : num = 00123.46
您的梦想收入 : $23,456.79

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

此类存在于java.text包中。

// Java程序展示如何使用SimpleDateFormat
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
class Formatter3
{
  public static void main(String args[]) throws ParseException
  {

    SimpleDateFormat ft = new SimpleDateFormat("dd-MM-yyyy");
    String str = ft.format(new Date());
    System.out.println("格式化的日期 : " + str);
    // 解析输入
    str = "02/18/1995";
    ft = new SimpleDateFormat("MM/dd/yyyy");
    Date date = ft.parse(str);
    // 打印
    System.out.println("解析的日期 : " + date);
  }
}

输出:

格式化的日期 : 09-08-2018
解析的日期 : Sat Feb 18 00:00:00 UTC 1995