`
高级java工程师
  • 浏览: 396028 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java实现打印金字塔

阅读更多
package io;

import java.util.Arrays;   
    
/**  
 * 打印一个字符组成的金字塔  
 */  
public class Pyramid {   
    
    // 程序入口   
    public static void main(String[] args) {   
        printPyramid(21, '*');   
    }   
    
    /**  
     * 打印一座金字塔。  
     *  
     * @param bottom_width 底层宽度。必须是奇数。  
     * @param ch           组成金字塔的字符  
     */  
    private static void printPyramid(int bottom_width, char ch) {   
        if (bottom_width < 1 || bottom_width % 2 == 0) {   
            throw new IllegalArgumentException();   
        }   
    
        int height = bottom_width / 2 + 1;  // 金字塔的高度   
        for (int i = 0; i < height; i++) {   
            int width = i * 2 + 1;    // 本层的宽度   
            System.out.println(getLevel(bottom_width, width, ch));   
        }   
    }   
    
    /**  
     * 生成金字塔的一行  
    *  
     * @param bottom_width 金字塔宽度  
     * @param width        本层的宽度  
     * @param ch           要打印的字符  
    *  
    * @return 金字塔的一行  
     */  
    private static String getLevel(int bottom_width, int width, char ch) {   
       int space_width = (bottom_width - width) / 2;   // 前面空格的宽度   
       return expand(' ', space_width) + expand(ch, width);   
    }   
    
    /**  
     * 生成包含若干个字符的字符串。  
     *  
     * @param c     生成字符串的字符  
    * @param width 字符串的长度  
     *  
     * @return 生成的字符串  
    */  
    private static String expand(char c, int width) {   
       char[] chars = new char[width];   
        Arrays.fill(chars, c);   
       return new String(chars);   
   }   
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics