Java 使用printf或format 進行格式化輸出
阿新 • • 發佈:2018-12-20
宣告
步驟 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
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,千位分隔符,小數點位數,本地化表達
其他常用的格式化方式
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個億,帶著他的小姨子跑了!我們沒有辦法,拿著錢包抵工資!原價都是一百多、兩百多、三百多的錢包,現在全部只賣二十塊,統統只要二十塊!黃鶴王八蛋,你不是人!我們辛辛苦苦給你幹了大半年,你不發工資,你還我血汗錢,還我血汗錢!
答案-黃鶴
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);
}
}