zoukankan      html  css  js  c++  java
  • 【练习】Java实现的杨辉三角形控制台输出

      1 import java.util.Scanner;
      2 
      3 /**
      4  * YangHui_tst01
      5  * @author HmLy
      6  * @version 000
      7  * - - - - - - -
      8  * 练习代码。(注释比较多)
      9  * 主方法用于实现功能:
     10  * 请求输入指定杨辉三角形大小(自然不能是1)
     11  * 然后打印该三角形。
     12  * 
     13  * 上下分割线可动态变动 ---- 这上面,合适的长度其实只是试出来的 .... 
     14  * - - - - - - -
     15  * 
     16  * 另,小发现:
     17  * import放在文档注释下头,vsc就不支持识别它里头的"@"了。。。。。  
     18  */
     19 //
     20 
     21 public class YangHui_tst01 {
     22     public static void main(String[] args) {
     23         System.out.println(">>=== === program_ONN=== === >>
    ");
     24         /**
     25          * 杨辉三角形
     26          */
     27         Scanner scn = new Scanner(System.in);
     28 
     29         System.out.print("# 请输入指定的杨辉三角的层数 :  | ");
     30         int yangHui_largeGet = scn.nextInt();
     31 
     32         int[][] x_YHui3JX = new int[yangHui_largeGet][];//遍历就"< yangHui_largeGet"就行。。
     33 
     34         System.out.print("# ");
     35         System.out.println("指定的层数 :                  | "+ yangHui_largeGet);
     36         //System.out.println("# ---- --- --- ---- --- --- ---- -" + " ---- --- --- ---- --- --- ---- -");
     37 
     38 
     39         
     40 
     41 
     42         //<动态分割线尝试>
     43         System.out.print("# ---- --- --- ---- --- -");
     44         for (int strxs = 1; strxs < yangHui_largeGet; strxs++) {
     45             System.out.print("- ---- -- - ---- -");
     46         }//for_strxssssssss
     47         System.out.print("
    ");
     48         //</动态分割线尝试>
     49 
     50 
     51 
     52 
     53         //下面应该不需要请求用户输入了?
     54         //造杨辉
     55 
     56         
     57         //如果large不完全指定,那是不是后面还要用new来腾出空间来?。。。
     58 
     59         for (int i = 0; i < yangHui_largeGet; i++) {
     60             x_YHui3JX[i] = new int[i + 1];
     61         }//new 阶梯
     62 
     63 
     64 
     65 
     66 
     67 
     68 
     69         //x_YHui3JX[1][1] = 1;
     70 
     71         //x_YHui3JX[0][0] = 1;//[0][0]是1 。。。
     72 
     73         for (int i = 0; i < 2; i++) {
     74             for (int jj = 0; jj <= i; jj++) {//上面没指定单独
     75                 x_YHui3JX[i][jj] = 1;
     76             }
     77         }//遍历输入三角头。
     78 
     79 
     80 
     81 
     82         //for (int i = 2; i <= yangHui_largeGet; i++) {//从 1 开始...?... // no! from 2! ....
     83         //    for (int jj = 1; jj <= i; jj++) {//这边 jj 的最大 同步于 i 。。。//这个就别从 2 开始了。。
     84         /* ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 
     85          * 不对,一行一列的话是[0][0]。。。
     86          * 上面注释掉。
     87          */
     88         //
     89 
     90         
     91         //for (int i = 1; i <= yangHui_largeGet; i++) {//[i=0]不必遍历;从[i=1]开始。
     92         //    for (int jj = 0; jj <= i; jj++) {//这边 jj 的最大 同步于 i 。。。//这个就别从 2 开始了。。
     93         /* ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 
     94          * 上面也不对,三角头不只一个数。
     95          * 看公式,三角头是有第二行的。
     96          */
     97         //
     98 
     99 
    100         //遍历表左壁!
    101         for (int i = 2; i < yangHui_largeGet; i++) {
    102             x_YHui3JX[i][0] = 1;
    103         }//for left KABE
    104 
    105 
    106 
    107 
    108 
    109 
    110         for (int i = 2; i < yangHui_largeGet; i++) {//[i=0]根据,不必遍历;从[i=1]开始。
    111             x_YHui3JX[i][i] = 1;//遍历右壁(那么下面jj就是<i而不是<=i了。)
    112             for (int jj = 1; jj < i; jj++) {//jj不能从 0 开始,否则,下标会出现[-1]。。。。 --> 所以,还要遍历的不仅仅三角头。
    113                                              //(其实,可以设定别处皆 0 。 但不那样,省硬件资源。)
    114                 x_YHui3JX[i][jj] = x_YHui3JX[i - 1][jj - 1] + x_YHui3JX[i - 1][jj];
    115             }//forjj
    116 
    117             //输入到数组,就不用换行了。。。
    118         }//fori
    119 
    120         //上面应该搞~~输出~~造表算是搞完了;
    121 
    122         //--------------------------------------
    123 
    124         //下面搞输出。
    125         System.out.println("# ");
    126         for (int i = 0; i < yangHui_largeGet; i++) {
    127             System.out.print("#  	"); //不换行。
    128             for (int bloki = 0; bloki < yangHui_largeGet - i; bloki++) {
    129                 System.out.print("	");
    130             }//for_bloki
    131             for (int jj = 0; jj <= i; jj++) {  //这里jj遍历就到i别忘了,再往外的连初始化都不算了。。。。(不过,先说好,没试。。。完了下面多来个遍历,试试。。)
    132                 System.out.print(""+ x_YHui3JX[i][jj] +"		" );
    133             }//forjj
    134             System.out.println();
    135         }//fori
    136 
    137 
    138 
    139 
    140 
    141         //<动态分割线尝试>
    142         System.out.print("# ---- --- --- ---- --- -");
    143         for (int strxs = 1; strxs < yangHui_largeGet; strxs++) {
    144             System.out.print("- ---- -- - ---- -");
    145         }//for_strxssssssss
    146         System.out.print("
    ");
    147         //</动态分割线尝试>
    148 
    149         //System.out.println("# ---- -"+"-- --- -"+"--- --- "+"--- ----"+" -" + " ---- "+"--- --- "+"---- ---"+" --- ---"+"- -");
    150 
    151         System.out.println("
    >> === ===program_OFF === ===>>");
    152     }//main
    153 }//pubclass

    输出三角形的上下分割线可动态变化。。。

  • 相关阅读:
    插入排序和顺序查找,折半查找
    单链表有环判断问题解决办法
    INT_MAX和INT_MAX
    最简单的学习往往是最无效的
    基于Windows安装Mysql数据库
    禁止跨域_五分钟带你了解跨域
    搞定SpringBoot多数据源(2):动态数据源
    API网关(API GATEWAY)是什么?有什么作用?
    一文搞懂蓝绿发布、灰度发布和滚动发布
    第九篇 bootstrap实例
  • 原文地址:https://www.cnblogs.com/senwren/p/YangHui_tst01.html
Copyright © 2011-2022 走看看