A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© kunsongjack 中级黑马   /  2015-10-27 13:22  /  384 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package blog;

  2. import java.util.Scanner;

  3. public class Yanghuisj {

  4.         public static void main(String[] args) {
  5.                
  6.                         System.out.println("请在此输入一个要输出的行数:");
  7.                        
  8.                         Scanner sc = new Scanner(System.in);
  9.                        
  10.                         while(true){
  11.                                
  12.                                 int n = sc.nextInt();
  13.                                
  14.                                 if(n<0||n>30){
  15.                                         System.out.println("请输入一个大于0小于30的整数:");
  16.                                 }else{
  17.                                         yhShuchu(n);
  18.                                         sc.close();
  19.                                         break;
  20.                                 }
  21.                                
  22.                         }

  23.         }
  24.        
  25.         public static void yhShuchu(int n){
  26.                
  27.                 //根据要输出的行数算出最大的值,并判断其位数并准备空两个格
  28.                 long spaceNum=returnMaxbit(n);
  29.                
  30.                 //输出每行每列及空格
  31.                 for(int i=0;i<n;i++){
  32.                                        
  33.                         for(int j=0;j<spaceNum*(n-i)/2;j++){
  34.                                 System.out.print(" ");
  35.                         }
  36.                        
  37.                         for(int k=0;k<i+1;k++){
  38.                                
  39.                                 System.out.printf("%"+spaceNum+"d",shuchu(i,k));
  40.                         }
  41.                        
  42.                         System.out.println();
  43.                 }
  44.                
  45.         }

  46.         //负责获取最大数的位数,并加两个空格
  47.         private static int returnMaxbit(int lineList) {               
  48.                
  49.                 Long b=shuchu(lineList,lineList/2);
  50.                 String str=b.toString();               
  51.                 return str.length()+2;
  52.         }

  53.         //方法体迭代负责输出几行几列的数字
  54.         private static long shuchu(long i, long k) {
  55.                 if(k==0||k==i){
  56.                         return 1;
  57.                 }else{
  58.                         return shuchu(i-1,k-1)+shuchu(i-1,k);
  59.                 }
  60.                
  61.                
  62.         }

  63. }
复制代码
调试的结果为:


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马