一 中英文對齊輸出問題
問題,要求控制台輸出如下:
abcefg def
森林 阿狗
其實就是要求對齊輸出,各種查找java的格式化輸出,然后發現只要一個簡單的“\t”就可以實現。
代碼如下:
System.out.printf("abcefg\t");
System.out.printf("def\t");
System.out.println();
System.out.printf("森林之王\t");
System.out.printf("阿狗\t");
二 幾個關於java格式化輸出的知識點匯總
2.1 類c的printf方法
Java的格式化輸出等同於String.Format,與C有很大的相似,比如 System.out.printf("%8.2f", x);
在printf中,可以使用多個參數,例如:System.out.printf("Hello, %s. Next year, you'll be %d", name, age);
用於printf的轉換符如下表:
| 轉換符 |
類型 |
舉例 |
| d |
十進制整數 |
159 |
| x |
十六進制整數 |
9f |
| o |
八進制整數 |
237 |
| f |
定點浮點數 |
15.9 |
| e |
指數浮點數 |
1.59e+01 |
| g |
通常浮點數 |
|
| a |
十六進制浮點數 |
0x1.fccdp3 |
| s |
字符串 |
Hello |
| c |
字符 |
H |
| b |
布爾型 |
TRue |
| h |
散列碼 |
42628b2 |
| tx |
日期時間 |
見時間介紹表 |
| % |
百分號 |
% |
| n |
分隔符 |
在printf函數中,可以使用多個標志,如: System.out.printf("%,.2f", 10000.0 / 3.0);
用於printf的標志如下表
| 標志 |
目的 |
舉例 |
| + |
打印數字前的符號 |
+3333.33 |
| space |
在正數之前加空格 |
| 3333.33| |
| 0 |
在數字前補0 |
003333.33 |
| - |
左對齊 |
|3333.33 | |
| ( |
負數括在括號內 |
(3333.33) |
| , |
添加分組分隔符 |
3,333.33 |
| # (for f ) |
包含小數點 |
3,333. |
| # (for x or o) |
添加前綴 0x 或 0 |
0xcafe |
| ^ |
轉化為大寫 |
0XCAFE |
| $ |
指定格式化參數索引,如%1$d,%1$d表示以十進制 |
159 9F |
| < |
格式化前面參數,如%d%<x表示以十進制和十六進 |
159 9F |
時間日期的轉換符如下:
| 轉換符 |
類型 |
舉例 |
| C |
完整日期和時間 |
Mon Feb 09 18:05:19 PST 2004 |
| F |
ISO 8601 日期 |
2004-02-09 |
| D |
美國時間格式 (mm/dd/year) |
02/09/2004 |
| T |
24小時時間 |
18:05:19 |
| r |
12小時時間 |
06:05:19 pm |
| R |
24小時無秒時間 |
18:05 |
| Y |
四位年 |
2004 |
| y |
年的后兩位 |
04 |
| C |
年的前兩位 |
20 |
| B |
月的完整拼寫 |
February |
| b or h |
月的縮寫 |
Feb |
| m |
兩位月(前補0) |
02 |
| d |
兩位日(前補0) |
09 |
| e |
日期(前不補0) |
9 |
| A |
完整星期幾 |
Monday |
| a |
星期幾的縮寫 |
Mon |
| j |
這一年的第多少天,三位補0 |
069 |
| H |
24小時制小時,兩位補0 |
18 |
| k |
24小時制小時,兩位不補0 |
18 |
| I |
12小時制小時,兩位補0 |
06 |
| l |
12小時制小時,兩位不補0 |
6 |
| M |
分鍾,兩位補0 |
05 |
| S |
秒,兩位補0 |
19 |
| L |
毫秒,三位補0 |
047 |
| N |
毫微秒,九位補0 |
047000000 |
| P |
上下午大寫 |
PM |
| p |
上下午小寫 |
pm |
| z |
RFC 822 numeric offset from GMT |
-0800 |
| Z |
時區 |
PST |
| s |
1970-01-01 00:00:00起秒數 |
1078884319 |
| E |
1970-01-01 00:00:00起毫秒數 |
1078884319047 |
2.2 String.format
public class StringFormat { /** * 格式化輸出 字符串 * [*]左對齊,右補空格 * * @param str * @param min_length : 最小輸出長度 * @return */ public static String formatLeftS(String str, int min_length) { String format = "%-" + (min_length < 1 ? 1 : min_length) + "s"; return String.format(format, str); } /** * 格式化輸出 整數 * [*]右對齊,左補0 * * @param num * @param min_length : 最小輸出長度 * @return */ public static String format0Right(long num, int min_length) { String format = "%0" + (min_length < 1 ? 1 : min_length) + "d"; return String.format(format, num); } /** * 格式化輸出 浮點數 * [*]右對齊,左補0 * * @param d * @param min_length : 最小輸出長度 * @param precision : 小數點后保留位數 * @return */ public static String format0Right(double d, int min_length, int precision) { String format = "%0" + (min_length < 1 ? 1 : min_length) + "." + (precision < 0 ? 0 : precision) + "f"; return String.format(format, d); } }
2.3 其它……
