java中用printf()方法来生成bar chart

本文通过一个例子来说明java中printf()的使用方法,同时也涉及到利用for循环对数组中的元素进行操作:

先贴出代码:
public class PrintfTest{
    public static void main(String[] args) {
        int[] arr = {0,1,3,0,0,4,3,2,1,1,2};
        System.out.println("成绩分布:");
        for (int count=0; count<arr.length; count++ ) {
            if (count==10) {
                System.out.printf("%5d:",100);
            }else{
                System.out.printf("%02d-%02d:",count*10,count*10+9);
            }

            //根据情况利用for循环输出*
            for (int i=0; i<arr[count];i++ ) {
                System.out.print("*");
            }
            System.out.println();
        }
    }

        }

程序的输出结果是:

成绩分布:
00-09:
10-19:*
20-29:***
30-39:
40-49:
50-59:****
60-69:***
70-79:**
80-89:*
90-99:*
  100:**
其中最值得注意的是printf()方法中数字0的使用:
  1. printf()方法顾名思义,单词前面的print代表输出,而f则代表format,表示进行格式化;
  2. %标志着格式化的开始,不可缺省;
  3. 举例而言,文中的printf(“%5d:”,100)的字母d代表decimal integer,也就是十进制整数,表示要把后面的数字格式化成十进制整数——在本例中就对应着后面的数字100。当然这里的100本身就是十进制整数,所以在输出结果中看不出差别来。
  4. 字母d和%之间的数字5代表着格式化的结果总共就占5列(把输出的结果想象成一个表格,便于理解)。可以看到输出结果中,100占了三列,而前边空出的部分正好对应两列——也就是和90对应的部分。
  5. 同样的道理:
  6. System.out.printf(“%02d-%02d:”,count*10,count*10+9);中的2也和5类似,也就是让格式化的结果占两列;
  7. 那么2前面的数字0是什么呢?
  8. 这个数字0代表格式化要求的列数为被输出结果占满时,空位用0来不足。举例而言:printf(“%06d:”, 299)就要求将299格式化成十进制整数,然后分给这个结果(也就是299)6个格子。但是299只能占据其中三个,那么在printf()方法默认右对齐的情况下,299前面就会出现3个空格。这个时候数字0就派上用场了。它起到的就是占位的作用:
public class  Test {
    public static void main(String[] args) {
        //举例说明数字0在格式化中的作用
        System.out.printf("%6d",299);
        System.out.println();
        System.out.printf("%06d",299);
    }
}

输出结果为:

   299
000299

由此可见数字0在格式化中的作用。

注:
1.注意格式化时,整个格式化的语句都需要加引号,如下图所示:

System.out.printf("%06d",299);

2.本文只着重强调了printf()方法格式化中数字0的作用,以及字母d代表的含义,但printf()方法,还有许多的可选格式化参数可以运用。如果有需要,可以参考帮助文档。
3.本文的例子参考了Java SE8 for Programmers, 3E P153。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值