黑马程序员技术交流社区

标题: 用数组实现打印杨辉三角 [打印本页]

作者: 呆呆呆呆孔    时间: 2015-5-1 09:49
标题: 用数组实现打印杨辉三角
/*
需求:打印杨辉三角形(行数可以键盘录入)
       
        1
        1 1       
        1 2 1
        1 3 3 1
        1 4 6 4 1
        1 5 10 10 5 1

        规律:
                每一行的第一列和最后一列都是1
                从第三行开始,每个元素都是它上一行的前一列和本列元素的和
               
        步骤;
                1.定义一个数组,如果键盘录入的是n ,并用Scanner
                        那么这个数组就是 int[n][n]
                2.将数组每行第一列和最后一列都赋值为1
                3.从第三行每个元素都是上行前一列和本列元素的和
                4.遍历数组
*/


  1. import java.util.Scanner;  //导Scanner包
  2. class  Array2Demo2
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 //创建对象,封装键盘录入
  7.                 Scanner sc = new Scanner(System.in);

  8.                 //提示键盘录入
  9.                 System.out.println("请键入一个数:");
  10.                 int n = sc.nextInt();

  11.                 int[][] arr = new int[n][n];

  12.                 //未实现前
  13.                 printArray2(arr);
  14.                
  15.                 System.out.println("-------------------------------------------------");
  16.                
  17.                 //定义功能实现步骤2和3
  18.                 trans(arr);
  19.                
  20.                 //实现后 全部打印
  21.                 printArray2(arr);
  22.                 System.out.println("-------------------------------------------------");

  23.                 //实现后,打印正三角部分
  24.                 printArray3(arr);

  25.         }

  26.         //定义功能
  27.         public static void trans(int[][] arr)
  28.         {
  29.                 for(int x=0;x<arr.length;x++)//给这个二维数组任何一行的第一列和该行数值对应的列赋值1
  30.                 {
  31.                         arr[x][0] = 1;//任何一行第1列
  32.                         arr[x][x] = 1;//任何一行的最后1列
  33.                 }

  34.                 //从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和
  35.                 for(int x=2;x<arr.length;x++)
  36.                 {
  37.                         for(int y=1;y<=x-1;y++)
  38.                         {
  39.                                 arr[x][y] = arr[x-1][y-1]+arr[x-1][y];//每一个数据是它上一行的前一列和它上一行的本列之和。
  40.                         }
  41.                 }

  42.         }
  43.         //遍历数组
  44.         public static void printArray2(int[][] arr)
  45.         {
  46.                 for(int x=0;x<arr.length;x++)
  47.                 {
  48.                         for(int y=0;y<arr[x].length;y++)
  49.                         {
  50.                                 System.out.print(arr[x][y]+" ");
  51.                         }
  52.                         System.out.println();
  53.                 }
  54.                
  55.         }
  56.         //遍历数组
  57.         public static void printArray3(int[][] arr)
  58.         {
  59.                 for(int x=0;x<arr.length;x++)
  60.                 {
  61.                         for(int y=0;y<=x;y++)
  62.                         {
  63.                                 System.out.print(arr[x][y]+" ");
  64.                         }
  65.                         System.out.println();
  66.                 }
  67.         }



  68. }
复制代码


考察知识点:
       方法定义:
        for循环嵌套
       数组的遍历
       正三角形规律




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