Java 使用printf或format 進(jìn)行格式化輸出
步驟 1 : 格式化輸出
如果不使用格式化輸出鼻忠,就需要進(jìn)行字符串連接讯赏,如果變量比較多棍好,拼接就會(huì)顯得繁瑣
使用格式化輸出彬祖,就可以簡(jiǎn)潔明了
%s 表示字符串
%d 表示數(shù)字
%n 表示換行
package digit;
public class TestNumber {
public static void main(String[] args) {
String name ="蓋倫";
int kill = 8;
String title="超神";
//直接使用+進(jìn)行字符串連接协怒,編碼感覺(jué)會(huì)比較繁瑣前标,并且維護(hù)性差,易讀性差
String sentence = name+ " 在進(jìn)行了連續(xù) " + kill + " 次擊殺后坠韩,獲得了 " + title +" 的稱(chēng)號(hào)";
System.out.println(sentence);
//使用格式化輸出
//%s表示字符串,%d表示數(shù)字,%n表示換行
String sentenceFormat ="%s 在進(jìn)行了連續(xù) %d 次擊殺后炼列,獲得了 %s 的稱(chēng)號(hào)%n";
System.out.printf(sentenceFormat,name,kill,title);
}
}
步驟 2 : printf和format
printf和format能夠達(dá)到一模一樣的效果只搁,通過(guò)eclipse查看java源代碼
可以看到,在printf中直接調(diào)用了format
package digit;
public class TestNumber {
public static void main(String[] args) {
String name ="蓋倫";
int kill = 8;
String title="超神";
String sentenceFormat ="%s 在進(jìn)行了連續(xù) %d 次擊殺后俭尖,獲得了 %s 的稱(chēng)號(hào)%n";
//使用printf格式化輸出
System.out.printf(sentenceFormat,name,kill,title);
//使用format格式化輸出
System.out.format(sentenceFormat,name,kill,title);
}
}
步驟 3 : 換行符
換行符就是另起一行 --- '\n' 換行(newline)
回車(chē)符就是回到一行的開(kāi)頭 --- '\r' 回車(chē)(return)
在eclipse里敲一個(gè)回車(chē)氢惋,實(shí)際上是回車(chē)換行符
Java是跨平臺(tái)的編程語(yǔ)言,同樣的代碼稽犁,可以在不同的平臺(tái)使用明肮,比如Windows,Linux,Mac
然而在不同的操作系統(tǒng),換行符是不一樣的
(1)在DOS和Windows中缭付,每行結(jié)尾是 “\r\n”柿估;
(2)Linux系統(tǒng)里,每行結(jié)尾只有 “\n”陷猫;
(3)Mac系統(tǒng)里秫舌,每行結(jié)尾是只有 "\r"。
為了使得同一個(gè)java程序的換行符在所有的操作系統(tǒng)中都有一樣的表現(xiàn)绣檬,使用%n足陨,就可以做到平臺(tái)無(wú)關(guān)的換行
package digit;
public class TestNumber {
public static void main(String[] args) {
System.out.printf("這是換行符%n");
System.out.printf("這是換行符%n");
}
}
步驟 4 : 總長(zhǎng)度,左對(duì)齊娇未,補(bǔ)0墨缘,千位分隔符,小數(shù)點(diǎn)位數(shù)零抬,本地化表達(dá)
其他常用的格式化方式
package digit;
import java.util.Locale;
public class TestNumber {
public static void main(String[] args) {
int year = 2020;
//總長(zhǎng)度忽妒,左對(duì)齊玩裙,補(bǔ)0兼贸,千位分隔符,小數(shù)點(diǎn)位數(shù)吃溅,本地化表達(dá)
//直接打印數(shù)字
System.out.format("%d%n",year);
//總長(zhǎng)度是8,默認(rèn)右對(duì)齊
System.out.format("%8d%n",year);
//總長(zhǎng)度是8,左對(duì)齊
System.out.format("%-8d%n",year);
//總長(zhǎng)度是8,不夠補(bǔ)0
System.out.format("%08d%n",year);
//千位分隔符
System.out.format("%,8d%n",year*10000);
//小數(shù)點(diǎn)位數(shù)
System.out.format("%.2f%n",Math.PI);
//不同國(guó)家的千位分隔符
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);
}
}
練習(xí): 黃鶴
借助Scanner 讀取字符串?dāng)?shù)據(jù)溶诞,然后用格式化輸出下面
浙江溫州最大皮革廠(chǎng) 江南皮革廠(chǎng)倒閉了,王八蛋老板黃鶴吃喝嫖賭决侈,欠下了3.5個(gè)億很澄,帶著他的小姨子跑了!我們沒(méi)有辦法,拿著錢(qián)包抵工資!原價(jià)都是一百多颜及、兩百多甩苛、三百多的錢(qián)包,現(xiàn)在全部只賣(mài)二十塊俏站,統(tǒng)統(tǒng)只要二十塊!黃鶴王八蛋讯蒲,你不是人!我們辛辛苦苦給你干了大半年,你不發(fā)工資肄扎,你還我血汗錢(qián)墨林,還我血汗錢(qián)!
答案:
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("請(qǐng)輸入地名:");
String location = s.nextLine();
System.out.println("請(qǐng)輸入公司類(lèi)型:");
String companyCategory = s.nextLine();
System.out.println("請(qǐng)輸入公司名稱(chēng):");
String companyName = s.nextLine();
System.out.println("請(qǐng)輸入老板名稱(chēng):");
String bossName = s.nextLine();
System.out.println("請(qǐng)輸入金額:");
String money = s.nextLine();
System.out.println("請(qǐng)輸入產(chǎn)品:");
String product = s.nextLine();
System.out.println("請(qǐng)輸入價(jià)格計(jì)量單位:");
String unit = s.nextLine();
String model = "%s最大%s%s倒閉了,王八蛋老板%s吃喝嫖賭犯祠,欠下了%s個(gè)億旭等,\r\n"
+ "帶著他的小姨子跑了!我們沒(méi)有辦法,拿著%s抵工資!原價(jià)都是一%s多衡载、兩%s多搔耕、三%s多的%s,\r\n"
+ "現(xiàn)在全部只賣(mài)二十塊痰娱,統(tǒng)統(tǒng)只要二十塊!%s王八蛋弃榨,你不是人!我們辛辛苦苦給你干了大半年,\r\n"
+ "你不發(fā)工資梨睁,你還我血汗錢(qián)鲸睛,還我血汗錢(qián)!";
System.out.format(model, location,companyCategory,companyName,bossName,money,product,unit,unit,unit,product,bossName);
}
}