Java自學-數字與字符串 格式化輸出


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);
         
    }
}

步驟 2 : printf和format

printf和format能夠達到一模一樣的效果,通過eclipse查看java源代碼
可以看到,在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);
         
    }
}

步驟 3 : 換行符

換行符就是另起一行 --- '\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");
         
    }
}

步驟 4 : 總長度,左對齊,補0,千位分隔符,小數點位數,本地化表達
其他常用的格式化方式

總長度,左對齊,補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);
         
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM