一 中英文对齐输出问题
问题,要求控制台输出如下:
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 其它……