Java中中英文对齐输出问题,以及Java中的格式化输出

一 中英文对齐输出问题

     问题,要求控制台输出如下:

    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 其它……

 

 

posted on 2013-08-05 22:56  AllenZhao  阅读(12057)  评论(0编辑  收藏  举报

导航