1. 程式人生 > >Java 使用printf或format 進行格式化輸出

Java 使用printf或format 進行格式化輸出

宣告

步驟 1 : 格式化輸出

如果不使用格式化輸出,就需要進行字串連線,如果變數比較多,拼接就會顯得繁瑣 使用格式化輸出,就可以簡潔明瞭

%s 表示字串 %d 表示數字 %n 表示換行

package digit;
 
public class TestNumber {
 
    public static void main(String[] args) {

    	String name ="蓋倫";
    	int kill = 8;
    	String title="超神";
    	
    	//直接使用+進行字串連線,編碼感覺會比較繁瑣,並且維護性差,易讀性差
    	String sentence =
name+ " 在進行了連續 " + kill + " 次擊殺後,獲得了 " + title +" 的稱號"; System.out.println(sentence); //使用格式化輸出 //%s表示字串,%d表示數字,%n表示換行 String sentenceFormat ="%s 在進行了連續 %d 次擊殺後,獲得了 %s 的稱號%n"; System.out.printf(sentenceFormat,name,kill,title); } }

printf和format

printf和format能夠達到一模一樣的效果,在printf中直接呼叫了format enter description here

package digit;
 
public class TestNumber {
 
    public static void main(String[] args) {

    	String name ="蓋倫";
    	int kill = 8;
    	String title="超神";
    	
    	String sentenceFormat ="%s 在進行了連續 %d 次擊殺後,獲得了 %s 的稱號%n";
    	//使用printf格式化輸出
    	System.out.printf(sentenceFormat,name,kill,title)
; //使用format格式化輸出 System.out.format(sentenceFormat,name,kill,title); } }

換行符

換行符就是另起一行 — ‘\n’ 換行(newline) 回車符就是回到一行的開頭 — ‘\r’ 回車(return) 在eclipse裡敲一個回車,實際上是回車換行符 Java是跨平臺的程式語言,同樣的程式碼,可以在不同的平臺使用,比如Windows,Linux,Mac 然而在不同的作業系統,換行符是不一樣的 (1)在DOS和Windows中,每行結尾是 “\r\n”; (2)Linux系統裡,每行結尾只有 “\n”; (3)Mac系統裡,每行結尾是隻有 “\r”。 為了使得同一個java程式的換行符在所有的作業系統中都有一樣的表現,使用%n,就可以做到平臺無關的換行

package digit;
 
public class TestNumber {
 
    public static void main(String[] args) {

    	System.out.printf("這是換行符%n");
    	System.out.printf("這是換行符%n");
    	
    }
}

總長度,左對齊,補0,千位分隔符,小數點位數,本地化表達

其他常用的格式化方式 enter description here

package digit;
 
import java.util.Locale;
  
public class TestNumber {
  
    public static void main(String[] args) {
        int year = 2020;
        //總長度,左對齊,補0,千位分隔符,小數點位數,本地化表達
         
        //直接列印數字
        System.out.format("%d%n",year);
        //總長度是8,預設右對齊
        System.out.format("%8d%n",year);
        //總長度是8,左對齊
        System.out.format("%-8d%n",year);
        //總長度是8,不夠補0
        System.out.format("%08d%n",year);
        //千位分隔符
        System.out.format("%,8d%n",year*10000);
 
        //小數點位數
        System.out.format("%.2f%n",Math.PI);
         
        //不同國家的千位分隔符
        System.out.format(Locale.FRANCE,"%,.2f%n",Math.PI*10000);
        System.out.format(Locale.US,"%,.2f%n",Math.PI*10000);
        System.out.format(Locale.UK,"%,.2f%n",Math.PI*10000);
         
    }
}

練習-黃鶴

藉助Scanner讀取字串資料,然後用格式化輸出下面

浙江溫州最大皮革廠江南皮革廠倒閉了,王八蛋老闆黃鶴吃喝嫖賭,欠下了3.5個億,帶著他的小姨子跑了!我們沒有辦法,拿著錢包抵工資!原價都是一百多、兩百多、三百多的錢包,現在全部只賣二十塊,統統只要二十塊!黃鶴王八蛋,你不是人!我們辛辛苦苦給你幹了大半年,你不發工資,你還我血汗錢,還我血汗錢!

enter description here

答案-黃鶴

package digit;

import java.util.Locale;
import java.util.Scanner;

public class TestNumber {

	public static void main(String[] args) {

		Scanner s = new Scanner(System.in);
		System.out.println("請輸入地名:");
		String location = s.nextLine();
		System.out.println("請輸入公司型別:");
		String companyCategory = s.nextLine();
		System.out.println("請輸入公司名稱:");
		String companyName = s.nextLine();
		System.out.println("請輸入老闆名稱:");
		String bossName = s.nextLine();
		System.out.println("請輸入金額:");
		String money = s.nextLine();
		System.out.println("請輸入產品:");
		String product = s.nextLine();
		System.out.println("請輸入價格計量單位:");
		String unit = s.nextLine();

		String model = "%s最大%s%s倒閉了,王八蛋老闆%s吃喝嫖賭,欠下了%s個億,\r\n"
				+ "帶著他的小姨子跑了!我們沒有辦法,拿著%s抵工資!原價都是一%s多、兩%s多、三%s多的%s,\r\n"
				+ "現在全部只賣二十塊,統統只要二十塊!%s王八蛋,你不是人!我們辛辛苦苦給你幹了大半年,\r\n"
				+ "你不發工資,你還我血汗錢,還我血汗錢!";		
		System.out.format(model, location,companyCategory,companyName,bossName,money,product,unit,unit,unit,product,bossName);
		
	}
}