黑马程序员技术交流社区

标题: 杨辉三角升级版 [打印本页]

作者: kunsongjack    时间: 2015-10-27 13:22
标题: 杨辉三角升级版
  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. }
复制代码
调试的结果为:







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2